我正面临着在pygtk应用中需要标签的问题。几乎就像gedit一样,但没有任何per-child widget内容。 我遇到了gtk.Notebook,但这需要我为每个标签添加一个小部件,我不想要。
原因是,我有一个小部件,但只想根据选择的标签更新其内容。
有关如何做到这一点的任何提示?
到目前为止,我的想法是为每个标签添加一些不可见的小部件,然后连接到select-page
信号。我可以将哪个小部件用作隐形小部件,还是有更好/替代的方式来实现我的目标?
答案 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))
现在您拥有“名称”,其中包含当前所选页面的标签。只需测试它(如果名称==“订单”......)进行交互。
希望这有一些帮助!