wxPython不能从子类中调用主类中的函数

时间:2015-02-06 14:13:00

标签: python class wxpython

我在尝试在单独的类中获取函数时遇到了困难。我有一个带有一些函数的主类,其中一个函数被重置:

class GUI(wx.Frame):
    [GUI STUFF HERE]

    def reset(self):
        self.data = [0]

在该类中,我也在子例程之前启动另一个类:

        self.controlPanel = controlPanel(self.panel)

它启动另一个类,它是一个带按钮的静态框。在该类中,我有一个绑定到按钮事件的函数:

    def reset(self, event):
        GUI.reset()

其中函数“reset”在主GUI类中。当我尝试在主类中调用reset时出现错误,但我可以反过来这样做。为什么这样,我该如何解决?我想要子类中的按钮事件来调用父类中的函数。

提前致谢。

1 个答案:

答案 0 :(得分:2)

“GUI”未在“controlPanel”中定义,您要调用“GUI”实例的方法。

一种方法是在按钮处理程序中执行以下操作:

self.GetParent().reset()

根据您的应用程序的复杂程度,如果您在GUI和controlPanel之间插入另一个图层,它将不再起作用,这将失控。

您可能希望使用'wx.lib.pubsub'并在您的controlPanel中使用'pub.sendMessage'并在您的GUI中使用'pub.subscribe'。

wxPython Phoenix pubsub doc

pubsub's doc