固定笔记本选项卡,使其位置无法更改

时间:2012-02-20 22:48:25

标签: python gtk pygtk

我有一个GtkNotebook,至少包含一个名为“搜索”的永久标签。此页面中的窗口小部件允许创建更多页面,这些页面包含一个包含关闭按钮的选项卡。

如何使标签可重新排序,还要将“搜索”标签保持在0位置? gtk.Notebook.set_tab_reorderable()的当前行为是它允许您物理拖动选项卡以对其重新排序...当可重新排序的选项卡移过它时,它不会阻止该选项卡被强制重新排序。

示例:

第一张图片是默认位置:

enter image description here

此图片是拖动第6行的结果(第6行可重新排序,但搜索不是): enter image description here

如何通过“可重新排序”标签重新排序“搜索”?

1 个答案:

答案 0 :(得分:7)

在我看来,可能的解决方案是连接到'page-reordered'信号,如下所示:

import gtk

 def on_reorder(notebook, child, number, user_data):
     if number == 0:
         notebook.reorder_child(user_data, 0)

 def main():
     mainwin = gtk.Window()
     notebook = gtk.Notebook()
     mainwin.add(notebook)
     mainwin.set_default_size(200,200)
     for label in ['Search', 'Row#6', 'Row#9']:
         child = gtk.VBox()
         notebook.append_page(child, gtk.Label(label))
         if label != 'Search':
             notebook.set_tab_reorderable(child, True)
         else:
             notebook.set_tab_reorderable(child, False)
     searchtab = notebook.get_nth_page(0)
     notebook.connect('page-reordered', on_reorder, searchtab)

     mainwin.show_all()
     mainwin.connect('destroy', gtk.main_quit)
     gtk.main()

 if __name__ == "__main__":
     main()   

希望它有所帮助。