Я работаю над графическим интерфейсом с помощью wxPython. Я создавал и тестировал все свои панели отдельно, и они, похоже, хорошо работают. Для того, чтобы проверить их, я просто бросить что-то вроде этого в конце моих файловwxPython SplitterWindow - автоматически устанавливает минимальный размер панели
class TestFrame(wx.Frame):
"""Test frame"""
def __init__(self, parent):
super(TestFrame, self).__init__(parent, -1, "My Frame",
size=(-1,-1))
# Setup main sizer
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
panel = SomethingCoolPanel(self)
self.mainSizer.Add(panel, 1, wx.EXPAND)
self.mainSizer.SetSizeHints(self)
self.Center()
class App(wx.App):
def OnInit(self):
self.frame = TestFrame(None)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
if __name__ == '__main__':
app = App()
app.MainLoop()
который получается хорошо за то, что я делаю. Мне нравится, как self.mainSizer.SetSizeHints (self) прекрасно устанавливает окно и устанавливает разумный минимальный размер.
Могу ли я настроить что-то подобное в окне сплиттера? Сейчас я просто устанавливаю минимальный размер и начальную позицию вручную. Он работает в настоящий момент, но должен быть лучший способ. Кроме того, установка размера минимальной панели применяется к обеим сторонам окна сплиттера. Возможно, мне хотелось бы, чтобы мин был меньше слева, чем справа.
Каков наилучший способ запроса наилучшего размера панели? Кроме того, я помещал панели в окно сплиттера. Дело в том, что, когда я тестировал панель, это был self.mainSizer.SetSizeHints (self) тестового кадра, который установил хороший минимальный размер. Вызывать то же самое в панели, похоже, не помогает. Я размещаю панели в окне сплиттера, но их можно изменить, однако – Shatnerz
Чтобы получить максимальный размер панели, вызовите 'GetBestSize()' на ней. Обычно вызов 'SetSizeHints()' в основном фрейме должен работать, так как сплиттер должен правильно вычислять свой собственный размер, используя наилучшие размеры его подлодок. –
Спасибо. Вы действительно знаете свой материал – Shatnerz