【问题标题】:wxpython dynamically referring to widgets (wxformbuilder)wxpython 动态引用小部件(wxformbuilder)
【发布时间】:2015-12-16 09:40:48
【问题描述】:

我经常发现自己想要在 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() 并为每个 StaticText 设置一个不同的 wx.ID 然后遍历每个元素并找到您创建的这个 ID。当我这样做时的格式真的很关键..文本获得不同的背景颜色,并且不尊重它的对齐方式和其他时髦的东西。

有什么想法可以做到这一点吗?

【问题讨论】:

    标签: python dynamic wxpython wxformbuilder


    【解决方案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")
    

    【讨论】:

    • 关于 SO 的答案应该比这更完整。至少你需要解释,为解决问题做了什么,以及为什么。包含 "maybe" 的答案强烈表明您不知道答案。在这种情况下,请勿将其作为一个发布。
    • 我的回答确实回答了这个问题。代码很简单,不言自明。这个词可能是对话性的,并不表示不知道答案。
    • 此答案被标记为低质量。在复习时,我得出了相同的结论,并指出了可以改进的具体点。
    猜你喜欢
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多