2015-04-15 43 views
0

我不知道如何(而不是使用GridBoxSizer)可以對齊元件面板上,這樣我有元件之間相等的水平間距?現在,我想出了這個:上的wxPython的BoxSizer對齊GUI元素 - 等於間距

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的,但空間是不是薄荷XFCE和Windows(所有版本)相等。所以我想知道,我該怎麼做才能讓我的元素在每個操作系統上看起來完全一樣?

我可以以某種方式(如何?)計算的水平間距的大小爲每個操作系統上的平等?

上的Kubuntu它看起來很棒:http://s13.postimg.org/b9340sxbb/kubuntu.png

在Windows上,沒有那麼大的都...:http://s23.postimg.org/4et87799n/win.png

當然,我可以爲不同的操作系統版本的準備,但我想使其自動適合

回答

0

看到你發送的圖片後,我可以說,GridBagSizer是您的要求最適合分級機。

但是,如果您想僅使用一堆BoxSizer s來執行此操作,請使用AddStretchSpacer方法,而不是在sizer中添加空白StaticText

wx.ALL覆蓋wx.LEFT因此,您可以使用wx.ALL刪除wx.LEFT