wxPython:更新wx Static上的标签会导致文本格式不正确

时间:2011-05-31 17:19:31

标签: wxpython

我有一个使用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()

1 个答案:

答案 0 :(得分:0)

您需要强制sizer使用恰当命名的Layout方法重做其布局。