4

我正在首次涉足 GUI 编程,并且正在尝试掌握 wxPython。我正在尝试使用 wxGlade,但结果有点问题。

我正在使用 GridSizer 进行布局。

我已经计算出,每次你向 sizer 添加东西时,它都会被放入下一个单元格。这意味着如果你有一个空单元格,你需要用一些东西来填充它。我对吗?

这是我要的布局(wxGlade 截图):

wxGlade 布局截图

问题是,从中生成代码我得到了这个:

在此处输入图像描述

    grid_sizer_1 = wx.GridSizer(3, 3, 0, 0)
    grid_sizer_1.Add(self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 0)
    grid_sizer_1.Add(self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_right, 0, wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)

似乎是因为“向下”按钮被放在第 7 个单元格而不是第 8 个单元格中。

处理这个问题的标准方法是什么?您会放入某种虚拟小部件来填充空单元格吗?如果是这样,哪个小部件?还是我使用了错误的尺寸器?

谢谢!

4

2 回答 2

9

正如你所说......添加一个虚拟小部件(空白静态文本)效果很好。您也可以使用 AddMany() 代替多个 add()。

grid_sizer_1 = wx.GridSizer(3, 3, 0, 0)
grid_sizer_1.AddMany( [
  (self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL),
  (self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL),
  (self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_right, 0, wx.ALIGN_CENTER_VERTICAL),
  (wx.StaticText(self, -1, ''), 0, wx.EXPAND),
  (self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL) ] )
于 2011-01-29T23:59:23.107 回答
5

我更熟悉使用(0,0)这意味着向 sizer 添加可拉伸尺寸。因此,人们会创建一个类似的对象empty_cell = (0,0),然后将其粘贴empty_cell在您的 sizer 中需要空白空间的任何地方(例如,在接受的答案中使用 wx.StaticText)。

于 2013-06-23T03:45:07.047 回答