我正在进行GUI编程,我正试图掌握wxPython。我正在尝试使用wxGlade,但事实证明它有点像马车。
我正在使用GridSizer进行布局。
我已经知道每次向sizer添加内容时,都会将其放入下一个单元格中。这意味着如果你有一个空单元格,你需要填充一些东西。我是对的吗?
这是我要去的布局(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个单元格。
处理此问题的标准方法是什么?你会把一些虚拟小部件填入空单元格吗?如果是这样的小部件?或者我使用了错误的sizer?
谢谢!
答案 0 :(得分: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) ] )
答案 1 :(得分:4)
我更熟悉使用(0,0)
,这意味着为sizer添加可伸缩的大小。因此,可以创建一个像empty_cell = (0,0)
这样的单个对象,然后在empty_cell
中粘贴到sizer中需要空白空间的地方(例如,在接受的答案中使用wx.StaticText)。