Pygtk: отключить перемещение разделителя в gtk.Панель (расширенная / VPaned)

#gtk #pygtk #drag #separator #pane

#gtk #pygtk #перетаскивание #разделитель #панель

Вопрос:

Есть ли способ, которым я могу запретить пользователю перетаскивать разделитель в gtk.Paned? Я не хочу отключать его полностью… если был вызван какой-либо дочерний элемент с измененным размером или set_position(), разделитель все равно должен изменить положение.

Спасибо!

Комментарии:

1. Я думаю, вам следует рассмотреть возможность использования виджета другого типа, поскольку виджет с панорамированием специально используется для того, чтобы позволить пользователю настраивать размер дочернего элемента. Vbox / hbox будет делать то, что вам нужно, и просто позволит дочернему элементу запрашивать другой размер, если требуется.

2. С помощью подхода vbox / hbox я могу программно изменить размер, но пользователь не может перетащить границы для изменения размера (например, окна). Есть ли еще один виджет, который позволил бы мне динамически включать / отключать изменение размера перетаскивания?

3. Э, я думаю, я что-то недопонимаю: vbox / hbox вовсе не препятствуют изменению размера окна. (Верны ли ваши pack_start настройки заполнения / расширения? Ваш виджет имеет фиксированный размер?)

Ответ №1:

Одним из возможных (грязных :)) способов было бы отслеживать события Paned и повторно устанавливать его размер:

 def handle_cb (pane, param):
    # detect if paned is locked
    # or its position has changed - ommited
    pane.set_position(10)
    return True

pane = gtk.VPaned()
...
pane.connect("notify", handle_cb)
  

Однако сначала я бы попытался сделать дочерние виджеты несжимаемыми.