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

时间:2011-09-21 11:30:21

标签: python tabs pygtk

我正面临着在pygtk应用中需要标签的问题。几乎就像gedit一样,但没有任何per-child widget内容。 我遇到了gtk.Notebook,但这需要我为每个标签添加一个小部件,我不想要。

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

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

2 个答案:

答案 0 :(得分:2)

隐形小部件的想法有效。但不是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)

答案 1 :(得分:0)

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

    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))

现在您拥有“名称”,其中包含当前所选页面的标签。只需测试它(如果名称==“订单”......)进行交互。

希望这有一些帮助!