我有一个for循环,为字典中的每个节点创建一个静态框,它将它们全部放在一个面板中,3到最大行,并且间隔开。现在我想在每个静态框内添加文本,但是当我这样做时,它缩小了框,将它们并排放置在偏离中心的位置,并在末尾添加了一个额外的框而没有任何内容。我评论了引起这个问题的界限:
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,但由于有多个静态框,因此无法工作。