Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython——StaticBox Sizer调整静态框的大小,并添加一个框?_Python_User Interface_Wxpython - Fatal编程技术网

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

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

我有一个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,但这行不通,因为有多个静态框。

代码很复杂。而且它不能作为独立的最小示例运行,因此很难启动它并处理它。由于还有很多其他的奇怪之处(例如,
boxSizer=
中的参数顺序,enumerate中令人难以置信的复杂参数,…),您不太可能得到有意义的帮助。明白了,我在一个新问题中提出了这个问题,并举了一个简单的例子:谢谢。