7

我正在编写一个 wxPython 应用程序,当我尝试更改 StaticText 对象中的文本时,我设置的对齐方式消失了。它从居中开始,但在文本更改后,对齐方式又回到默认的左对齐方式。这是我的相关代码:

#initializing
self.panel = wx.Panel(self)
self.st_RouteInfo = wx.StaticText(self.panel, label=self.route_start, style=wx.ALIGN_CENTRE)

#changing StaticText
self.st_RouteInfo.SetLabel("Put text here")
self.Update()

我猜我忘记了一些基本的东西,因为我是 wxPython 和 wxWidgets 的新手。谢谢!

4

1 回答 1

13

您必须调用 sizer 或 parent 的Layout()方法:

class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)
        self.label = wx.StaticText(self.panel, label="Test", style=wx.ALIGN_CENTRE)
        self.button = wx.Button(self.panel, label="Change")

        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.label, 1)
        self.sizer.Add(self.button)

        self.button.Bind(wx.EVT_BUTTON, self.OnButton)

        self.panel.SetSizerAndFit(self.sizer)  
        self.Show()

    def OnButton(self, e):
        self.label.SetLabel("Oh, this is very looooong!")
        self.sizer.Layout()
        # self.panel.Layout()  #Either works

app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
于 2013-04-12T09:19:41.383 回答