wxPython SplitterWindow - 自动设置最小窗格大小

时间:2015-12-03 16:42:12

标签: python user-interface wxpython wxwidgets

我正在使用wxPython处理GUI。我一直在创建和测试我的所有面板,它们似乎运作良好。为了测试它们,我只是在我的文件末尾抛出这样的东西

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)如何很好地设置窗口并设置合理的最小尺寸。

我可以在分割窗口中设置这样的东西吗?现在我只是手动设置最小窗格大小和起始位置。它目前有效,但必须有更好的方法。此外,设置最小窗格大小适用于拆分器窗口的两侧。也许我希望最小值在左边比在右边少。

1 个答案:

答案 0 :(得分:0)

您可以将面板放在分离器内,当然,为什么不呢?唯一的问题是分离器的另一半会有什么,但我想你对此有一些了解。

要设置初始位置,请查询面板的最佳尺寸,并使用其垂直或水平分量(取决于您的分割器方向)来定位窗扇。

最后,要为窗格设置不同的最小尺寸,您需要覆盖wxSplitterWindow::OnSashPositionChanging(),但我不确定wxPython是否支持这样做。