UI类继承,super()无法正常工作

时间:2013-03-31 13:45:06

标签: python wxwidgets

存在一个wxwidgets 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 个答案:

答案 0 :(得分: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