Gtk3 Paned Widget стандартные однородные размеры

Я хотел бы, чтобы размер по умолчанию для двух моих панелей в виджете Paned был одинаковой ширины или одинаковой высоты.

Поскольку для этого нет очевидных настроек, как я могу правильно рассчитать этот размер?


person ThorSummoner    schedule 19.04.2015    source источник


Ответы (2)


Вы можете получить общий размер панорамного виджета с помощью get_allocation(), а затем установить положение разделителя вдвое меньше.

В зависимости от того, какой пользовательский интерфейс вы хотите, вы можете либо сделать это один раз, либо подключить обработчик после запуска сигнала size-allocate и продолжать пересчитывать его, пока пользователь не настроит его вручную.

person ptomato    schedule 20.04.2015
comment
Ммм, меня беспокоит то, что дескриптор изменения размера панели переменной ширины использует неизвестную ширину пространства, поэтому половина родителя не будет правильного размера, как я полагаю. Однако вы дали мне идею попробовать оба дочерних виджета, суммировать и усреднять их, чтобы получить ширину, которой они должны быть! - person ThorSummoner; 20.04.2015

Я столкнулся с этим вопросом, пытаясь решить ту же проблему, вот подход, который я нашел в примере на каком-то сайте (решение для ширины, при необходимости адаптируйтесь к высоте):

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))

Я все еще работаю над кодом и буду добавлять код, чтобы он сохранял любые пользовательские изменения и сохранял ту же пропорцию при изменении размера окна. Но этого должно быть достаточно, чтобы другие начали работу над своим решением.

person insaner    schedule 25.11.2020