2013-03-31 112 views
1

一个wxWidgets的UI类存在,看起来像这样:UI类继承,超()工作不正常

class mainFrame (wx.Frame): 
    def __init__(self, parent): 
     # Constructor code 
     # ... 
     # ... 
    # Virtual event handlers, overide them in your derived class 
    def about_click(self, event): 
     event.Skip() 
    def search_perform(self, event): 
     event.Skip() 
    def new_note_event(self, event): 
     event.Skip() 
    def save_note_event(self, event): 
     event.Skip() 

我能够直接构建这个类的一个实例,并在事件存根补,它的工作原理,但我相信我不应该改变UI代码文件,但将其用作我的基类。

我尝试使用

class Main(mainFrame): 
    def __init__(self): 
     super(mainFrame, self).__init__(self, None) 

以上不起作用。

回答

1

现在是固定的。 super()致电代理。当我通过名称引用父类时,它起作用。

我使用的UI类的方法是

class Main(mainFrame): 
    def __init__(self): 
     mainFrame.__init__(self, None) # using super().__init__(self, None) fails 
    def about_click(self, event): 
     print("AboutDialog") 

def main(): 
    app = wx.PySimpleApp(0) 
    frame = Main() 
    app.SetTopWindow(frame) 
    frame.Show() 
    app.MainLoop() 

if __name__ == '__main__': 
    main() 

super()不适合老式类工作可言。它仅适用于从object或其他新风格类继承的new-style classes