在 wxpython 的 BoxSizer 上对齐 GUI 元素 - 等间距
Align GUI elements on wxpython's BoxSizer - equal spacing
我想知道如何(而不是使用 GridBoxSizer)对齐面板上的元素,使元素之间的水平间距相等?现在,我想到了这个:
label1 = wx.StaticText(self, label="Emails Database File:")
label2 = wx.StaticText(self, label="Email Start Number")
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(label1, 0, wx.ALL | wx.LEFT, 5)
sizer.Add(wx.StaticText(self, size=(20, 15)), 0, wx.ALL | wx.LEFT, 5)
sizer.Add(self.txtcontrol1, 1, wx.ALL | wx.LEFT, 5)
sizer.Add(self.chooseFileButton, 0, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(label2, 0, wx.ALL | wx.LEFT, 5)
sizer.Add(wx.StaticText(self, size=(25, 15)), 0, wx.ALL | wx.LEFT, 5)
sizer.Add(self.spin, 1, wx.ALL | wx.LEFT, 5)
sizer.Add(self.button, 0, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.infoLabel, 0, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.infoText, 1, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.progressBar, 1, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
self.SetSizer(mainSizer)
在带有 KDE 的 Kubuntu 上看起来不错,但是在带有 XFCE 和 Windows(任何版本)的 Mint 上空间不相等。所以我想知道,我怎样才能让我的元素在每个 OS 上看起来完全一样?
我能否以某种方式(以及如何?)计算每个 OS 上的水平间距大小相等?
在 Kubuntu 上它看起来很棒:http://s13.postimg.org/b9340sxbb/kubuntu.png
在 Windows 上,一点也不好...:http://s23.postimg.org/4et87799n/win.png
当然我可以为不同的OS准备版本,但我想让它自动适应
看到您发送的图像后,我可以说 GridBagSizer
是最适合您要求的 sizer。
但是如果您只想使用一堆 BoxSizer
来执行此操作,请使用 AddStretchSpacer
方法而不是在 sizer 中添加空白 StaticText
。
并且 wx.ALL
覆盖 wx.LEFT
,因此您可以删除 wx.LEFT
与 wx.ALL
一起使用的任何地方。
我想知道如何(而不是使用 GridBoxSizer)对齐面板上的元素,使元素之间的水平间距相等?现在,我想到了这个:
label1 = wx.StaticText(self, label="Emails Database File:")
label2 = wx.StaticText(self, label="Email Start Number")
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(label1, 0, wx.ALL | wx.LEFT, 5)
sizer.Add(wx.StaticText(self, size=(20, 15)), 0, wx.ALL | wx.LEFT, 5)
sizer.Add(self.txtcontrol1, 1, wx.ALL | wx.LEFT, 5)
sizer.Add(self.chooseFileButton, 0, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(label2, 0, wx.ALL | wx.LEFT, 5)
sizer.Add(wx.StaticText(self, size=(25, 15)), 0, wx.ALL | wx.LEFT, 5)
sizer.Add(self.spin, 1, wx.ALL | wx.LEFT, 5)
sizer.Add(self.button, 0, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.infoLabel, 0, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.infoText, 1, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.progressBar, 1, wx.ALL | wx.LEFT, 5)
mainSizer.Add(sizer, 0, wx.ALL | wx.EXPAND, 5)
self.SetSizer(mainSizer)
在带有 KDE 的 Kubuntu 上看起来不错,但是在带有 XFCE 和 Windows(任何版本)的 Mint 上空间不相等。所以我想知道,我怎样才能让我的元素在每个 OS 上看起来完全一样?
我能否以某种方式(以及如何?)计算每个 OS 上的水平间距大小相等?
在 Kubuntu 上它看起来很棒:http://s13.postimg.org/b9340sxbb/kubuntu.png
在 Windows 上,一点也不好...:http://s23.postimg.org/4et87799n/win.png
当然我可以为不同的OS准备版本,但我想让它自动适应
看到您发送的图像后,我可以说 GridBagSizer
是最适合您要求的 sizer。
但是如果您只想使用一堆 BoxSizer
来执行此操作,请使用 AddStretchSpacer
方法而不是在 sizer 中添加空白 StaticText
。
并且 wx.ALL
覆盖 wx.LEFT
,因此您可以删除 wx.LEFT
与 wx.ALL
一起使用的任何地方。