wxPython SetLabel在框架外的类?

时间:2013-03-13 16:16:46

标签: python wxpython

我正在尝试在不是框架类的类中使用wxPython的SetLabel()。这基本上就是我对框架的看法:

class tradeWindow(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, "Exchange", size = (500, 190), pos = (390, 300), style = wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
        panel = wx.Panel(self)
        self.priceLabel = wx.StaticText(self, -1, label = x, pos = (84, 10))

现在我想在课堂外设置priceLabel的标签。在课程中,可以使用self.priceLabel.SetLabel(x),但tradeWindow.priceLabel.SetLabel(x)在课堂外不起作用。

1 个答案:

答案 0 :(得分:0)

要在类外部设置类属性,您必须传递引用或使用pubsub之类的东西。假设您有第二帧(tradeWindow)生成的第二帧。创建第二帧时,将“self”作为对原始帧的引用传递给它:

self.newFrame = NewFrame(self)

然后在你的NewFrame的init中,你会有这样的东西:

def __init__(self, parentFrame):
    wx.Frame.__init__(self, None, title="New Frame")
    self.parentFrame = parentFrame

然后你可以做 self.parentFrame.priceLabel.SetLabel

另一种解决方案是在创建发布消息的侦听器时使用类似pubsub的内容。当侦听器收到消息时,它会触发一个可用于设置标签的事件。您可以在此处阅读有关pubsub的更多信息:http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/