#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)
Однако сначала я бы попытался сделать дочерние виджеты несжимаемыми.