防止面板在wxPython中重叠?
我刚刚开始学习wxPython。我有以下代码:防止面板在wxPython中重叠?,wxpython,Wxpython,我刚刚开始学习wxPython。我有以下代码: import wx class SASFrame(wx.Frame): def __init__(self,parent,id,title): wx.Frame.__init__(self,parent,id,title) groupPanel = wx.Panel(self) st = wx.StaticText(groupPanel, -1, "Which characteristi
import wx
class SASFrame(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title)
groupPanel = wx.Panel(self)
st = wx.StaticText(groupPanel, -1, "Which characteristics would you like to group by?")
cbAge = wx.CheckBox(groupPanel, -1, "Age")
cbMarket = wx.CheckBox(groupPanel,-1, "Market")
groupSizer = wx.BoxSizer(wx.VERTICAL)
groupSizer.AddMany([st,cbAge, cbMarket])
groupPanel.SetSizer(groupSizer)
summaryPanel = wx.Panel(self)
st2 = wx.StaticText(summaryPanel, -1, "What would you like to summarize?")
cbPremiums = wx.CheckBox(summaryPanel,-1, "Premiums")
cbClaims = wx.CheckBox(summaryPanel,-1, "Claims")
summarySizer = wx.BoxSizer(wx.VERTICAL)
summarySizer.AddMany([st2,cbPremiums,cbClaims])
summaryPanel.SetSizer(summarySizer)
frameSizer = wx.BoxSizer(wx.VERTICAL)
frameSizer.Add(groupPanel,1,wx.EXPAND)
frameSizer.Add(summaryPanel,1,wx.EXPAND)
self.SetSizer(frameSizer)
class SASApp(wx.App):
def __init__(self):
wx.App.__init__(self)
def OnInit(self):
self.frame = SASFrame(parent=None,id=-1,title="HCRFM Custom Report Generator")
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def main():
app = SASApp()
app.MainLoop()
if __name__ == '__main__':
main()
当我调整窗口大小使其非常小时,它看起来如下所示:
如何防止这种重叠?另外,我怎样才能让用户不能使窗口小到足以切断水平方向的文本?我不确定是否应该担心后者。我的方法是确定并修复窗口的最小大小,以防止不必要的小部件隐藏。我使用: wx.Window还有另一个: 允许指定最小和最大窗口大小,以及 大小增量。如果一对值未设置(或设置为-1),则 将使用默认值。如果调用此函数,用户将 无法在给定边界外调整窗口大小(如果是 顶层窗口)尺寸测量员还将检查最小窗口尺寸 并将在计算布局时使用该值(如果已设置) 调整大小的增量仅在Motif或Xt下有效
只需将您的行编辑为:
self.SetSizerAndFit(frameSizer)
它的行为将完全符合你的预期。它将把你的小部件布局到最小尺寸的窗口(如果你需要的话,可以添加边框或空格),而且它永远不允许窗口比这个小。wx文档中的更多信息:
SetSizeHintsSz(self, minSize, maxSize=DefaultSize, incSize=DefaultSize)
self.SetSizerAndFit(frameSizer)