wxPython:为什么我的wx.GridBagSizer在被告知时没有对齐我的小部件?

时间:2017-09-15 12:49:28

标签: python user-interface wxpython sizer gridbagsizer

我在wxPython中编写了一个GUI,并使用wx.GridBagSizer来管理布局。我希望某些小部件(如按钮和文本)在各自的网格框中以某种方式对齐。我认为当我将每个小部件添加到sizer时提供的wx.ALIGN_LEFTwx.CENTER标志会处理这个,但正如您在下面我的GUI的图像中看到的那样......它什么都不做。

https://i.imgur.com/qePQ7g2.png(因为我有10点声望,所以无法嵌入图片:c)

编辑:这就是它的外观:https://i.imgur.com/7TQ6ONe.png

以下是我的代码示例,其中显示了我如何在sizer中建立所有图片小部件...

我想让txtComments居中,其他一切都是正确对齐的。

    sizer = wx.GridBagSizer(0, 0)

    sizer.Add(self.txtProblemName, pos = (7, 0), span = (1, 2), flag = wx.EXPAND | wx.ALL | wx.ALIGN_RIGHT, border = 5)
    sizer.Add(self.txtNumberOfNodes, pos = (8, 0), span = (1, 2), flag = wx.EXPAND | wx.ALL | wx.ALIGN_RIGHT, border = 5)
    sizer.Add(self.txtRouteLength, pos = (9, 0), span = (1, 2), flag = wx.EXPAND | wx.ALL | wx.ALIGN_RIGHT, border = 5)
    sizer.Add(self.txtRuntime, pos = (10, 0), span = (1, 2), flag = wx.EXPAND | wx.ALL | wx.ALIGN_RIGHT, border = 5)
    sizer.Add(self.txtCreationDate, pos = (11, 0), span = (1, 2), flag = wx.EXPAND | wx.ALL | wx.ALIGN_RIGHT, border = 5)
    sizer.Add(self.txtAuthor, pos = (12, 0), span = (1, 2), flag = wx.EXPAND | wx.ALL | wx.ALIGN_RIGHT, border = 5)
    sizer.Add(self.txtComments, pos = (7, 4), span = (1, 2), flag = wx.EXPAND | wx.ALL | wx.CENTER, border = 0)

    self.SetSizerAndFit(sizer)

如果有人知道如何解决这个问题,我会非常感激。我的GUI目前看起来像一团糟。如果可能,还提供垂直对齐的修复,而不仅仅是水平对齐。

如果您需要有关我的实施的更多信息,请不要犹豫。谢谢:D

1 个答案:

答案 0 :(得分:1)

尝试删除静态文本项的wx.EXPAND标志。该标志告诉sizer扩展项目的大小,以便填充sizer为项目提供的空间。如果它正在填充空间,那么就没有空间来移动它以获得对齐标记。

此外,如果您还不熟悉它,您应该了解Widget Inspection Tool。它对于诊断sizer布局问题非常方便,并为您提供了一种可视化大小调整器以及如何将其中的项目放置在其分配空间内的方法。