【问题标题】:wxPython SplitterWindow - Automatically Set Min Pane SizewxPython SplitterWindow - 自动设置最小窗格大小
【发布时间】:2015-12-03 16:42:11
【问题描述】:

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

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

【问题讨论】:

    标签: python user-interface wxpython wxwidgets


    【解决方案1】:

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

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

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

    【讨论】:

    • 查询最佳面板尺寸的最佳方法是什么?另外,我将面板放在拆分器窗口中。问题是,当我测试面板时 - 测试框架的 self.mainSizer.SetSizeHints(self) 设置了很好的最小尺寸。在面板中调用相同的方法似乎没有帮助。我将面板放在拆分器窗口中,但是可以调整它们的大小
    • 要获得最佳的面板尺寸,请致电GetBestSize()。通常在主框架上调用SetSizeHints() 应该仍然可以工作,因为拆分器应该使用其子窗口的最佳尺寸正确计算其自己的最佳尺寸。
    • 谢谢。你真的很了解你的东西
    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 2023-04-11
    • 2017-01-18
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多