我有一个GtkNotebook,至少包含一个名为"搜索"的永久标签.此页面中的窗口小部件允许创建更多页面,并且这些页面具有包含关闭按钮的选项卡.
如何使标签可重新排序,还要将"搜索"标签保持在0位置?gtk.Notebook.set_tab_reorderable()的当前行为是它允许您物理拖动选项卡以对其重新排序...当可重新排序选项卡移过它时,它不会阻止该选项卡被强制重新排序.
例:
第一张图片是默认位置:

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

如何通过"可重新排序"标签重新排序"搜索"?
在我看来,可能的解决方案是连接到这样的'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()
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.