В приложении, использующем wxPython, я использую wx.aui.AuiManager для компоновки основного фрейма. Для определенного события, вызванного пользователем, в кадре должны появиться две панели. Я могу добавить их так, чтобы они отображались в нужном месте (справа) в кадре, но я боролся с размером каждой панели. Если self._mgr = wx.aui.AuiManager()
, я просто используюНастройка размера с помощью wx.aui.AuiManager's AddPane
self._mgr.AddPane(mypanel1, wx.aui.AuiPaneInfo().
Name("MyPanel1").
Caption("MyPanel1").
MinSize(MyPanel1.GetBestSize()).
BestSize(MyPanel1.GetBestSize()).
Right().Layer(1).Position(0).CloseButton(True).
MaximizeButton(False))
self._mgr.AddPane(mypanel2, wx.aui.AuiPaneInfo().
Name("MyPanel2").
Caption("MyPanel2").
MinSize(MyPanel2.GetBestSize()).
BestSize(MyPanel2.GetBestSize()).
Right().Layer(1).Position(1).CloseButton(True).
MaximizeButton(False))
self._mgr.Update()
Проблема заключается в том, что при запуске программного обеспечения и открытие этих двух панелей (они всплывают в то же время), высота каждой панели height_frame * 0,5, но я хочу их высоту, чтобы сказать height_panel1 = 0.3 * height_frame, а height_panel2 = 0.7 * height_frame.
См. Пример ниже. Верхнее изображение - это то, что я заканчиваю, панель 1 и панель 2 имеют одинаковую высоту (половина доступной высоты в кадре). Самое маленькое - это то, что я хочу, где каждая панель имеет некоторое соотношение между собой.
+---------------------------------+
| +-----------+| ^F
| MAIN FRAME | panel1 || | r
| | || | a
| | || | m
| | || | e
| +-----------+| |
| | panel2 || | h
| | || | e
| | || | i
| | || | g
| +-----------+| v h
+---------------------------------+ t
+---------------------------------+
| +-----------+|
| MAIN FRAME | panel1 ||
| | ||
| +-----------+|
| | panel2 ||
| | ||
| | ||
| | ||
| | ||
| | ||
| +-----------+|
+---------------------------------+
Попытки, которые я сделал, чтобы решить эту проблему, чтобы играть с параметрами MinSize и BestSize в AddPane-вызова (т.е. BestSize(wx.Size(1000, 1000))
), но результат в том, что ширина двух панелей меняется, но высота каждой панели остается одинаковой (половина высоты исходного кадра)!
Обратите внимание, что это соотношение между панелями 1 и панелью 2 (30/70) будет одинаковым, даже если масштабирование основного основного кадра, но пользователь также должен иметь возможность масштабировать их, перетаскивая панели «как обычно» «(это то, что я должен сделать прямо сейчас, чтобы получить от 50/50 до 30/70 ... но эта функция, конечно, должна быть доступна).
Есть ли какие-либо предложения/решения по устранению этой проблемы? Заранее спасибо!
Спасибо за ваш skybobbi! После многих попыток, я обнаружил, что добавление следующих строк непосредственно перед 'self.Update()' будет исправлять: 'self._mgr.GetPane (« MyPanel1 »). Dock_proportion = 10' и' self._mgr. GetPane («MyPanel1»). Dock_proportion = 25'. – pathoren