wxPython GridSizer - 处理空单元格

Aco*_*orn 4 python layout user-interface wxpython wxglade

我正在进行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)
Run Code Online (Sandbox Code Playgroud)

看似因为"向下"按钮被放入第7个单元而不是第8个单元.

处理这个问题的标准方法是什么?你会把一些虚拟小部件填入空单元格吗?如果是这样的小部件?或者我使用了错误的sizer?

谢谢!

whi*_*y04 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) ] )
Run Code Online (Sandbox Code Playgroud)


dem*_*lem 5

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