-1

我经常发现自己想wx.StaticText在 wxFormbuilder 中创建一些或其他一些小部件并能够动态引用这些小部件。假设我有一些a0通过命名的静态文本a10

我将如何在代码中找到它们?

一种方法是做一个包含所有变量的列表,但它很难看,而且感觉效率低下?也许不是,但至少代码到处都是长长的列表。

 def updateLabels(self, data):
     guiLabels = [self.a0, self.a1, self.a2 ..... ]
     for i in range(len(guiLabels)):
         guiLabels[i].SetLabel(data[i)

你如何解决这个问题?

另一种选择是在启动应用程序时创建 guiLabels 列表。但是,我在找到它们时遇到了一些问题。您必须在顶部窗口上调用 GetChildren() 并wx.ID为每个元素设置一个不同的值StaticText,然后遍历每个元素并找到您创建的这个 ID。当我这样做时的格式真的很关键。文本得到不同的背景颜色并且不尊重它的对齐方式和其他时髦的东西。

关于我如何做到这一点的任何想法?

4

1 回答 1

1

也许这样的事情可以为你工作:

for x in xrange(10):
    name = "a%s" % x # dynamically generating reference names
    obj = getattr(self, name) # getting the object reference from the parent object
    obj.SetLabel("xyz")
于 2015-12-16T20:01:08.007 回答