wxPython - StaticBox Sizer调整静态框的大小,并添加一个框?

时间:2015-03-08 06:01:41

标签: python user-interface wxpython

我有一个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,但由于有多个静态框,因此无法工作。

0 个答案:

没有答案