如何获取(无子项)“tabs”在 pygtk 应用程序中

发布于 2024-12-06 00:45:52 字数 363 浏览 0 评论 0原文

我面临着需要在 pygtk 应用程序中使用选项卡的问题。与 gedit 非常相似,但没有任何针对每个子组件的小部件内容。 我遇到过 gtk.Notebook,但这需要我把每个选项卡都有一个小部件,这是我不想要的。

原因是,我有一个小部件,但只想根据选择的选项卡更新其内容。

关于如何做到这一点有任何提示吗? 到目前为止,我的想法是为每个选项卡添加一些不可见的小部件,然后连接到 select-page 信号。我可以使用哪个小部件作为隐形小部件,或者是否有更好/替代的方法来实现我的目标?

I am facing the problem to need tabs in a pygtk app. Pretty much just like gedit has, but without any per-child widget content.
I’ve come across gtk.Notebook, but that requires me to put a widget for each tab, which I don't want.

The reason is, that I have one widget, but would only like to updates its content based on which tab is selected.

Any hints on how to do that?
My idea so far would be to just add some invisible widget for each tab and then connect to the select-page signal. Which widget could I use as invisible widget, or is there a better/alternative way of achieving my goal?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

地狱即天堂 2024-12-13 00:45:52

隐形小部件的想法是有效的。但不是使用 gtk.Invisible (这只会崩溃),而是使用 gtk.HBox() 或任何其他看起来空的东西。

self.notebook.append_page(gtk.HBox(), gtk.Label("title"))

现在,如果我实际上想在选项卡内显示内容,我可以使用 reparent 将小部件移动到当前选项卡,如下所示。

class Tab(gtk.HBox):
    def __init__(self, child):
        self.child = child

self.notebook.append_page(Tab(myWidget), gtk.Label("title"))

def pageSelected(self, notebook, page, pagenum):
    box = notebook.get_nth_page(pagenum)
    box.child.reparent(box)

The invisble widget idea works. But not with gtk.Invisible (this just crashes), but with gtk.HBox() or any other thing that seems empty.

self.notebook.append_page(gtk.HBox(), gtk.Label("title"))

Now if I want to display stuff inside the tab actually, I can use reparent to move the widget to the current tab like this.

class Tab(gtk.HBox):
    def __init__(self, child):
        self.child = child

self.notebook.append_page(Tab(myWidget), gtk.Label("title"))

def pageSelected(self, notebook, page, pagenum):
    box = notebook.get_nth_page(pagenum)
    box.child.reparent(box)
当梦初醒 2024-12-13 00:45:52

您可以根据需要拥有全局小部件,每个选项卡一个,以便在选择选项卡时轻松访问它们。

    self.notebook.append_page(self.rightBox,    gtk.Label("Orders"))

然后连接到“切换页面”信号

    self.notebook.connect("switch-page", self.pageSelected)

并:

def pageSelected(self, notebook, page, pagenum):
    name = notebook.get_tab_label(notebook.get_nth_page(pagenum))

现在您有了带有当前所选页面标签的“名称”。只需测试它(如果名称==“订单”...)即可进行交互。

希望这对您有所帮助!

You can have global widgets, one per tab as you want, in order to access them easily when the tab is selected.

    self.notebook.append_page(self.rightBox,    gtk.Label("Orders"))

Then connect to the "switch page" signal

    self.notebook.connect("switch-page", self.pageSelected)

and :

def pageSelected(self, notebook, page, pagenum):
    name = notebook.get_tab_label(notebook.get_nth_page(pagenum))

Now you have "name" with the label of the currently selected page. Just test it (if name == "Orders" ...) to interact.

Hope this was of some help !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文