0

我在使用 wxPython 工具包时遇到问题。我正在使用 wx.GridSizer 对象来放置一个显示一些状态信息的网格。我需要更新这个网格,所以我想出了几种不同的方法。我更喜欢的是简单地刷新/更新需要更新的文本,因此我可以尝试将 wxStaticText 对象从 sizer 中分离出来,用新的 wxStaticText 对象覆盖它,然后将对象重新插入到 sizer 的先前索引处。

更好的方法是使用 wxGridSizer 的父类 wxSizer,它有一个名为“替换”的方法,它允许我替换小部件中的项目而不将其取出,然后将其重新插入。更光滑不?好吧,在尝试使用此方法时,我遇到了一个非常奇怪的错误。这是代码后跟错误:

    self.info_sizer.Replace(self.project_value, wx.StaticText(self, wx.ID_ANY, project))

    self.info_sizer.Replace(self.project_value, wx.StaticText(self, wx.ID_ANY, project))
AttributeError: 'GridSizer' object has no attribute 'Replace'

所以突然更换不是一种选择。请记住,我之前提到的 Insert 方法是 sizer 的父类 wxSizer 的方法。所以证明我使用的sizer wxGridSizer可以成功调用其父类的方法(继承,子类)Insert。

那么为什么我不能以类似的方式调用方法替换?

4

1 回答 1

0

有什么理由不能wx.StaticText.SetLabel("New label")用来更新文本?

于 2009-07-18T08:26:23.240 回答