我有两个这样的课程:
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
答案 0 :(得分:0)
你为什么要那样做?你在这做什么?如果你真的需要从其他类中调用某个函数,你可以创建ClassNrTwo
的实例然后在ClassNrOne
中你可以做这样的事情。
classnrtwo = ClassNrTwo(self, wx.ID_ANY)
self.Bind(wx.EVT_BUTTON, classnrtwo.do, self.mybutton)
但是,我个人不建议像这样使用它,它不是从其他类调用事件,它只是使用其他类函数。
对于第二个问题,__init__
是一个神奇的函数(好的解释here)就像一个构造函数,它会在你创建一个类的实例时自动调用,如上例所示,__init__
“ClassNrTwo”的功能也会自动运行。
希望得到这个帮助,