2013-04-12 93 views
4

我正在編寫一個wxPython應用程序,當我嘗試更改StaticText對象中的文本時,我設置的對齊將消失。它開始居中,但在文本被改變後,對齊回到默認的左對齊。這裏是我的相關代碼:更改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的。謝謝!

回答

6

你要打電話或者分級機的還是父母的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() 
+0

謝謝你,這真是棒極了! – Myles

+0

在我的情況下,我只有標籤可用,所以我做了(C++等價)'label.GetParent()。Layout()'。 –

相關問題