编辑:尽管一切都在下面评论在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