2011-05-31 40 views
0

我有一個使用wxpython的窗體,窗體上的一個對象顯示用戶窗口登錄名。wxPython:更新wxStatic上的標籤會導致文本格式不正確

self.stIwpcadmin = wx.StaticText(self.panelLower, -1, "NONE") 

當然,我不知道叫什麼名字,直到運行時,所以我創建一個wxStatic對象與「無」標籤,然後在運行時,它獲取用戶名和更改標籤

sUsername = getpass.getuser() 
self.stIwpcadmin.SetLabel('WINDOWS/'+sUsername) 

發生這種情況時,它會更新wxStatic對象的文本。問題在於它'運行'到GridSizer中的下一個對象中。如果我調整窗口的大小(任何數量,更大或更小),它會強制對象重繪並正確填充文本。

我該如何強制這種情況發生,需要用戶更改窗口大小?

這是顯示wxStatic信息的sizer數據的代碼。我將一些代碼刪除以儘可能簡短。總之self.stIwpcadmin - > grid_sizer_1 - > sizerPassword - > sizerLower - > self.panelLower - > mainSizer

def __do_layout(self): 
    # begin wxGlade: mainFrame.__do_layout 
    mainSizer = wx.GridSizer(2, 1, 0, 0) 
    sizerLower = wx.GridSizer(1, 2, 0, 0) 
    sizerInstall = wx.StaticBoxSizer(self.sizerInstall_staticbox, wx.HORIZONTAL) 
    sizerInstallButtons = wx.GridSizer(1, 2, 0, 0) 
    sizer_4 = wx.BoxSizer(wx.VERTICAL) 
    sizerPassword = wx.StaticBoxSizer(self.sizerPassword_staticbox, wx.HORIZONTAL) 
    grid_sizer_1 = wx.GridSizer(8, 3, 0, 0) 
    mainSizer.Add(self.panelUpper, 1, wx.EXPAND, 0) 
    grid_sizer_1.Add(self.stIwpcadmin, 0, wx.ALL|wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 2) 
    grid_sizer_1.Add(self.txIwpcadmin, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 2) 
    grid_sizer_1.Add(self.btnIwpcadmin, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 2) 
    grid_sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0) 
    grid_sizer_1.Add(self.panel_2, 1, wx.EXPAND, 0) 
    grid_sizer_1.Add(self.btnValidateAll, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 2) 
    sizerPassword.Add(grid_sizer_1, 1, wx.EXPAND, 0) 
    sizerLower.Add(sizerPassword, 1, wx.EXPAND, 0) 
    self.panelLower.SetSizer(sizerLower) 
    mainSizer.Add(self.panelLower, 1, wx.EXPAND, 0) 
    self.SetSizer(mainSizer) 
    mainSizer.Fit(self) 
    self.Layout() 

回答

0

您需要強制分級機使用恰當地命名Layout方法重做其佈局。

+0

做self.stIwpcadmin.Layout()沒有工作。也沒有.Refresh或我使用的其他幾種方法。我也試過self.Layout()和self.Refresh() – ccwhite1 2011-05-31 17:39:19

+1

明白了。我必須對父級sizer進行.layout。所以在這種情況下,我不得不將grid_sizer_1更改爲self.grid_sizer_1,然後在更新後,我執行self.grid_sizer_1.layout() – ccwhite1 2011-05-31 18:06:40