wxpython GridBagSizer 问题

1 投票
1 回答
837 浏览
提问于 2025-04-16 14:02

每当我在GridBagSizer中使用span时,就会遇到问题,下面是我的代码:

    hbox3.Add(arrangeLabel)
    hbox3.Add(self.arrangeComboBox, flag=wx.LEFT, border=10)
    sizer.Add(hbox3, pos=(7,0), span=(7,3), flag=wx.ALL, border=15)

    #######################
    hbox4 = wx.BoxSizer(wx.HORIZONTAL)
    runButton = wx.Button(panel, -1, label='Run', size=(50,25))
    saveButton = wx.Button(panel, -1, label='Save', size=(50,25))
    cancelButton = wx.Button(panel, -1, label = 'Cancel', size=(50,25))

    hbox4.Add(runButton)
    hbox4.Add(saveButton, flag=wx.LEFT, border=10)
    hbox4.Add(cancelButton, flag=wx.LEFT, border=10)

    sizer.Add(hbox4, pos=(8,0), flag=wx.ALIGN_CENTER_HORIZONTAL)

    sizer.AddGrowableCol(1)
    panel.SetSizer(sizer)

在第三行,我的hbox3从(7,0)跨越到(7,3)。这 somehow 影响了我的第8行,第8行会消失到窗口的角落里。即使我把pos=(8,0)改成pos=(9,0),问题依然存在。解决这个问题的唯一办法就是去掉span=(7,3),但这样我的界面看起来就很难看。

我到底出了什么问题呢?

1 个回答

2

我觉得你可能误解了 span 这个参数。span=(7,3) 是在告诉布局管理器,这个控件要从它的起始位置扩展到 7 行和 3 列。如果你想让它覆盖从 7,0 到 7,3 的区域,可以试试 span=(1,4)

撰写回答