wxPython SetLabel在frame的类之外?

2024-10-03 11:14:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个不是框架类的类中使用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)在类之外不起作用。


Tags: posselfbox框架idinitdefwxpython
1条回答
网友
1楼 · 发布于 2024-10-03 11:14:29

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

self.newFrame = NewFrame(self)

然后在NewFrame的init中,会有如下内容:

^{pr2}$

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

另一种解决方案是在创建一个向其发布消息的侦听器时使用pubsub之类的工具。当侦听器接收到消息时,它将触发一个事件,您可以使用该事件来设置标签。你可以在这里阅读更多关于pubsub的信息:http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

相关问题 更多 >