Я использую wx.aui для создания своего пользовательского интерфейса. Я определяю класс, который наследуется от wx.Panel, и мне нужно изменить содержимое этой панели, когда размер ее окна изменяется.
Я использую код, очень похожий на код ниже (это измененная версия примера кода, найденного здесь ).
Мой вопрос: есть ли метод wx.Panel, вызываемый AuiManager за кулисами, который я могу перегрузить? Если нет, то как мой объект ControlPanel может узнать, что его размер изменяется?
Например, если я запускаю этот код и перетаскиваю горизонтальный разделитель между верхней и нижней панелями справа, как верхняя правая панель сообщает, что ее размер только что изменился?
import wx
import wx.aui
class ControlPanel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.mgr = wx.aui.AuiManager(self)
leftpanel = ControlPanel(self, -1, size = (200, 150))
rightpanel = ControlPanel(self, -1, size = (200, 150))
bottompanel = ControlPanel(self, -1, size = (200, 150))
self.mgr.AddPane(leftpanel, wx.aui.AuiPaneInfo().Bottom())
self.mgr.AddPane(rightpanel, wx.aui.AuiPaneInfo().Left().Layer(1))
self.mgr.AddPane(bottompanel, wx.aui.AuiPaneInfo().Center().Layer(2))
self.mgr.Update()
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, '07_wxaui.py')
frame.Show()
self.SetTopWindow(frame)
return 1
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()