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()
做self.stIwpcadmin.Layout()沒有工作。也沒有.Refresh或我使用的其他幾種方法。我也試過self.Layout()和self.Refresh() – ccwhite1 2011-05-31 17:39:19
明白了。我必須對父級sizer進行.layout。所以在這種情況下,我不得不將grid_sizer_1更改爲self.grid_sizer_1,然後在更新後,我執行self.grid_sizer_1.layout() – ccwhite1 2011-05-31 18:06:40