Я хотел бы, чтобы размер по умолчанию для двух моих панелей в виджете Paned был одинаковой ширины или одинаковой высоты.
Поскольку для этого нет очевидных настроек, как я могу правильно рассчитать этот размер?
Я хотел бы, чтобы размер по умолчанию для двух моих панелей в виджете Paned был одинаковой ширины или одинаковой высоты.
Поскольку для этого нет очевидных настроек, как я могу правильно рассчитать этот размер?
Вы можете получить общий размер панорамного виджета с помощью get_allocation()
, а затем установить положение разделителя вдвое меньше.
В зависимости от того, какой пользовательский интерфейс вы хотите, вы можете либо сделать это один раз, либо подключить обработчик после запуска сигнала size-allocate
и продолжать пересчитывать его, пока пользователь не настроит его вручную.
Я столкнулся с этим вопросом, пытаясь решить ту же проблему, вот подход, который я нашел в примере на каком-то сайте (решение для ширины, при необходимости адаптируйтесь к высоте):
hpane = Gtk.HPaned()
# hpane.set_wide_handle(True)
hpane.connect("size-allocate", self.hpane_resize_cb)
[...]
def hpane_resize_cb(self, widget, allocation):
if allocation.width != 1:
hpane_pos = 0.5 * allocation.width
widget.set_position(int(hpane_pos + .5))
Я все еще работаю над кодом и буду добавлять код, чтобы он сохранял любые пользовательские изменения и сохранял ту же пропорцию при изменении размера окна. Но этого должно быть достаточно, чтобы другие начали работу над своим решением.