0

我正在 wxPython 中编写一个 GUI,并使用 wx.GridBagSizer 来管理布局。我希望某些小部件(如按钮和文本)在它们各自的网格框中以某种方式对齐。我认为当我将每个小部件添加到 sizer 时提供的wx.ALIGN_LEFTandwx.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

4

1 回答 1

1

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

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

于 2017-09-15T16:05:12.600 回答