wxpython动态引用小部件(wxformbuilder)

时间:2015-12-16 09:40:48

标签: python dynamic wxpython wxformbuilder

我经常发现自己处于一种情况,我想在wxFormbuilder中创建一些wx.StaticText或其他一些小部件,并且能够动态地引用这些小部件。假设我有一些名为a0a10

的静态文本

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

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

 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。当我这样做时的格式是真的关键..文本得到不同的背景颜色,并不尊重它的对齐和其他时髦的东西。

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

1 个答案:

答案 0 :(得分: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")