我有一个GtkNotebook,至少包含一个名为“搜索”的永久标签。此页面中的窗口小部件允许创建更多页面,这些页面包含一个包含关闭按钮的选项卡。
如何使标签可重新排序,还要将“搜索”标签保持在0位置? gtk.Notebook.set_tab_reorderable()的当前行为是它允许您物理拖动选项卡以对其重新排序...当可重新排序的选项卡移过它时,它不会阻止该选项卡被强制重新排序。
示例:
第一张图片是默认位置:
此图片是拖动第6行的结果(第6行可重新排序,但搜索不是):
如何通过“可重新排序”标签重新排序“搜索”?
答案 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()
希望它有所帮助。