我如何从另一个班级召集活动?

时间:2012-09-26 12:55:41

标签: wxpython

我有两个这样的课程:

class ClassNrOne(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,'Title',size=(1024,600))
        self.panel = wx.Panel(self,size=(1024,600))
        self.mybutton = wx.Button(self.panel,label="OK",pos=(215,160),size=(80,40))
        self.Bind(wx.EVT_BUTTON, ClassNrTwo.do, self.mybutton)

class ClassNrTwo(wx.Panel):
    def __init__(self,parent,id):
        wx.Panel.__init__(self, parent,id)
        self.newpanel = wx.Panel(self,size=(1024,600))
    def do(self,event):
        # do something

当我尝试运行它时,我收到错误消息:“'ClassNrOne'对象没有属性'ClassNrTwo'”。如果我向后试试 - > self.Bind(wx.EVT_BUTTON,do.ClassNrTwo,self.mybutton)我收到消息:“全局名称'do'未定义”。我怎样才能从另一个班级召集一个活动?

关于此问题的第2个问题:当点击'mybutton'时,是否也可以从ClassNrTwo调用'__init__'?

编辑: 我只是把所有的小问题都集中在一个大问题上:​​https://stackoverflow.com/questions/12604139/need-tutorial-for-menubar-handling-panel-building

1 个答案:

答案 0 :(得分:0)

你为什么要那样做?你在这做什么?如果你真的需要从其他类中调用某个函数,你可以创建ClassNrTwo的实例然后在ClassNrOne中你可以做这样的事情。

classnrtwo = ClassNrTwo(self, wx.ID_ANY)
self.Bind(wx.EVT_BUTTON, classnrtwo.do, self.mybutton)

但是,我个人不建议像这样使用它,它不是从其他类调用事件,它只是使用其他类函数。

对于第二个问题,__init__是一个神奇的函数(好的解释here)就像一个构造函数,它会在你创建一个类的实例时自动调用,如上例所示,__init__ “ClassNrTwo”的功能也会自动运行。

希望得到这个帮助,