我有一个使用wxpython的表单,表单上的一个对象显示用户的Windows登录名。
self.stIwpcadmin = wx.StaticText(self.panelLower, -1, "NONE")
当然我直到运行时才知道名称是什么,所以我创建了一个标签为'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()