Сделайте вкладку ноутбука закрепленной, чтобы ее положение не могло быть изменено - PullRequest
4 голосов
/ 21 февраля 2012

У меня есть GtkNotebook, который будет содержать по крайней мере одну постоянную вкладку, которая называется «Поиск». Виджет на этой странице позволяет создавать больше страниц, и на этих страницах есть вкладка с кнопкой закрытия.

Как мне сделать вкладки переставляемыми, но при этом оставить вкладку «Поиск» на якоре в позиции 0? Текущее поведение gtk.Notebook.set_tab_reorderable () заключается в том, что он позволяет вам физически перетаскивать вкладку, чтобы изменить ее порядок ... он не препятствует тому, чтобы эта вкладка была вынуждена изменить порядок, когда переставляемая вкладка проходит мимо нее.

Пример:

Это первое изображение по умолчанию позиции:

enter image description here

Это изображение является результатом перетаскивания строки № 6 (где строка № 6 переставляется, а поиск - нет): enter image description here

Как мне предотвратить переупорядочение вкладок «Поиск» с помощью «переупорядочиваемых» вкладок?

1 Ответ

7 голосов
/ 21 февраля 2012

Мне кажется, что возможным решением было бы подключиться к сигналу '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()   

Надеюсь, это поможет.

...