Существует класс пользовательского интерфейса wxwidgets, который выглядит так:

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
Anirudh Ramanathan 31 Мар 2013 в 17:45

1 ответ

Лучший ответ

Сейчас это исправлено. Вызов super() срабатывает . Когда я вместо этого ссылаюсь на родительский класс по имени, он работает.

Я использую класс пользовательского интерфейса следующим образом:

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, либо от других классов нового стиля.

1
Anirudh Ramanathan 31 Мар 2013 в 18:24