wxPython——StaticBox Sizer调整静态框的大小,并添加一个框?
我有一个for循环,它为字典中的每个节点创建一个静态框,并将它们全部放在一个面板中,最多3行,并隔开。现在我想在每个静态框中添加文本,但当我这样做时,它会缩小框,将它们并排放置在中心之外,并在末尾添加一个没有任何内容的额外框。我注释掉了导致此问题的行:wxPython——StaticBox Sizer调整静态框的大小,并添加一个框?,python,user-interface,wxpython,Python,User Interface,Wxpython,我有一个for循环,它为字典中的每个节点创建一个静态框,并将它们全部放在一个面板中,最多3行,并隔开。现在我想在每个静态框中添加文本,但当我这样做时,它会缩小框,将它们并排放置在中心之外,并在末尾添加一个没有任何内容的额外框。我注释掉了导致此问题的行: nodeSizer = wx.BoxSizer(wx.VERTICAL) rowSizer = wx.BoxSizer(wx.HORIZONTAL) nodeSizer.AddSpacer((0,25)) rowSizer
nodeSizer = wx.BoxSizer(wx.VERTICAL)
rowSizer = wx.BoxSizer(wx.HORIZONTAL)
nodeSizer.AddSpacer((0,25))
rowSizer.AddStretchSpacer(1)
for index, (key, value) in enumerate(self.addArgs["khzObj"].nodes.items(), start=1):
self.nodeBoxes[key] = wx.StaticBox(nodeTab, wx.ID_ANY, value.name, size=(nodeWidth,nodeHeight))
# boxSizer = wx.StaticBoxSizer(self.nodeBoxes[key], wx.VERTICAL)
# nodeInfo = "Node ID: {id}".format(id=value.id)
# nodeIdText = wx.StaticText(nodeTab, wx.ID_ANY, nodeInfo)
# nodeStateText = wx.StaticText(nodeTab, wx.ID_ANY, value.currentStateStr)
# boxSizer.Add(nodeIdText, proportion=1, flag=wx.ALIGN_CENTER)
# boxSizer.Add(nodeStateText, proportion=2, flag=wx.ALIGN_CENTER)
# NOTE: the next line usually adds the staticBox, not the boxSizer
# rowSizer.Add(boxSizer, proportion=10)
rowSizer.AddStretchSpacer(1)
if index % 3 == 0:
nodeSizer.Add(rowSizer, flag=wx.ALIGN_CENTER)
nodeSizer.AddSpacer((0,25))
rowSizer = wx.BoxSizer(wx.HORIZONTAL)
rowSizer.AddStretchSpacer(1)
有人能看出我做错了什么吗?为什么我的箱子要重新调整尺寸和布局?我曾想使用box sizer作为行的水平sizer,但这行不通,因为有多个静态框。代码很复杂。而且它不能作为独立的最小示例运行,因此很难启动它并处理它。由于还有很多其他的奇怪之处(例如,
boxSizer=
中的参数顺序,enumerate中令人难以置信的复杂参数,…),您不太可能得到有意义的帮助。明白了,我在一个新问题中提出了这个问题,并举了一个简单的例子:谢谢。