編輯:儘管一切都在下面評論在Windows上運行,第一個選項是行不通的,對例如,Ubuntu可能是一個bug。在評論中給出的以前的帖子表明在OSX中也發現了同樣的問題。
在任何情況下,使用垂直分割器的第二個選項在Ubuntu和Windows中都可以使用,因此您可以在OSX上使用它。
您的文字有指令要與wx.ALIGN...
的方式排列,事實上,它對齊。但是,StaticText的大小不是面板的大小,而只是文本的大小。將其位置限制在自己的大小後,您將看不到對齊模式之間的差異。
有兩個選項來解決這個問題:
選項1.展開StaticText窗口小部件的大小和它的定位文本
你可以使用它的size
參數擴展您的StaticText窗口小部件的大小。除了固定大小的父母或框架,您不會在其他應用程序中更改大小或重新使用外,這是一個糟糕的解決方案。如果包含文本的小部件的大小發生變化,那麼文本的相對位置也將被修改,因爲它的大小保持不變。所以最好通過sizer來組織你的小部件。
的可用空間的微件中的分級機槽佔據的比例是由第二個參數在sizer.Add()
給出(0
是最小尺寸,1
充滿職業):
sizer_2.Add(self.label_1, 0, 0, 0)
要請參閱面板中對齊的文本,因爲您需要告訴StaticText擴展到所有可用空間:
sizer_2.Add(self.label_1, 1, 0, 0)
在這裏你有相關的代碼:
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.panel_1 = wx.Panel(self, -1)
self.label_1 = wx.StaticText(self.panel_1, -1, "label_1", style=wx.ALIGN_RIGHT)
self.panel_2 = wx.Panel(self, -1)
self.label_2 = wx.StaticText(self.panel_2, -1, "label_2", style=wx.ALIGN_CENTRE)
self.panel_3 = wx.Panel(self, -1)
self.label_3 = wx.StaticText(self.panel_3, -1, "label_3")
self.panel_1.SetBackgroundColour(wx.Colour(0, 255, 0))
self.panel_2.SetBackgroundColour(wx.Colour(0, 255, 255))
self.panel_3.SetBackgroundColour(wx.Colour(219, 112, 147))
sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2.Add(self.label_1, 1, 0, 0)
sizer_3.Add(self.label_2, 1, 0, 0)
sizer_4.Add(self.label_3, 1, 0, 0)
self.panel_1.SetSizer(sizer_2)
self.panel_2.SetSizer(sizer_3)
self.panel_3.SetSizer(sizer_4)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
sizer_1.Add(self.panel_2, 1, wx.EXPAND, 0)
sizer_1.Add(self.panel_3, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
注長於需要的,以便與三塊板,以模擬天生您的示例代碼。您只使用一個面板獲得相同的框架視圖。事實上,它可以進一步不使用板和直接在分級機設置靜態文本被簡化:
class MyFrame2(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.label_1 = wx.StaticText(self, -1, "label_1", style=wx.ALIGN_RIGHT)
self.label_2 = wx.StaticText(self, -1, "label_2", style=wx.ALIGN_CENTRE)
self.label_3 = wx.StaticText(self, -1, "label_3")
self.label_1.SetBackgroundColour(wx.Colour(127, 255, 0))
self.label_2.SetBackgroundColour(wx.Colour(0, 255, 255))
self.label_3.SetBackgroundColour(wx.Colour(219, 112, 147))
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.label_1, 1, wx.EXPAND, 0)
sizer.Add(self.label_2, 1, wx.EXPAND, 0)
sizer.Add(self.label_3, 1, wx.EXPAND, 0)
self.SetSizer(sizer)
sizer.Fit(self)
self.Layout()
選項2在分級器的可用空間找到插件本身在期望的位置。 您可以使用position
參數StaticText
來達到此目的。但是,如果使用size
,則會出現上述相同的問題。所以你又想用sizer來控制視圖的幾何形狀。 您使用的一個在篩分器定位插件:
sizer_6.Add(self.label_5, 0, wx.ALIGN_RIGHT, 0)
或
sizer_7.Add(self.label_6, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
出於某種原因,這個工作你需要一個垂直BoxSizer
(並以同樣的方式,如果你想喜歡用wx.ALIGN_CENTER_VERTICAL您將需要一個水平BoxSizer
:
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.panel_4 = wx.Panel(self, -1)
self.label_5 = wx.StaticText(self.panel_4, -1, "label_5")
self.panel_5 = wx.Panel(self, -1)
self.label_6 = wx.StaticText(self.panel_5, -1, "label_6")
self.panel_6 = wx.Panel(self, -1)
self.label_7 = wx.StaticText(self.panel_6, -1, "label_7")
self.panel_4.SetBackgroundColour(wx.Colour(0, 255, 255))
self.panel_5.SetBackgroundColour(wx.Colour(127, 255, 0))
self.panel_6.SetBackgroundColour(wx.Colour(219, 112, 219))
sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
sizer_8 = wx.BoxSizer(wx.VERTICAL)
sizer_7 = wx.BoxSizer(wx.VERTICAL)
sizer_6 = wx.BoxSizer(wx.VERTICAL)
sizer_6.Add(self.label_5, 0, wx.ALIGN_RIGHT, 0)
sizer_7.Add(self.label_6, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
sizer_8.Add(self.label_7, 0, 0, 0)
self.panel_4.SetSizer(sizer_6)
self.panel_5.SetSizer(sizer_7)
self.panel_6.SetSizer(sizer_8)
sizer_1.Add(self.panel_4, 1, wx.EXPAND, 0)
sizer_1.Add(self.panel_5, 1, wx.EXPAND, 0)
sizer_1.Add(self.panel_6, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
這種選擇意味着面板和施膠劑次的組合at產生的代碼比第一個選項更難以簡化。
Duplicate:http://stackoverflow.com/questions/8587060/wxpython-text-alignment-does-not-work/8612146#8612146 – 2011-12-25 01:20:08
也許你可以添加有關你的測試環境(操作系統,Python版本,wxPython版本)。 – 2011-12-25 01:26:53