我想知道如何(而不是使用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)Kubuntu上的KDE看起来不错,但在Mint上,XFCE和Windows (任何版本)的空间并不相等。所以我想知道,我该如何在每个操作系统上布置我的元素,使其看起来完全相同?
我能不能(怎么做?)在每个操作系统上计算水平间距的大小是否相等?
在Kubuntu上,它看起来很棒:http://s13.postimg.org/b9340sxbb/kubuntu.png
在Windows上,一点都不太好.:http://s23.postimg.org/4et87799n/win.png
当然,我可以为不同的OSes准备版本,但我想让它自动适应
发布于 2015-04-16 12:32:53
在看到您发送的图像之后,我可以说GridBagSizer是满足您需求的最合适的测试工具。
但是,如果您只想使用一堆BoxSizer来完成这一任务,请使用AddStretchSpacer方法,而不是在测试器中添加一个空白的StaticText。
wx.ALL覆盖wx.LEFT,这样就可以在与wx.ALL一起使用的任何地方删除wx.LEFT。
https://stackoverflow.com/questions/29649419
复制相似问题