Python: RuntimeError: Superklasse __init __ () von% S wurde nie aufgerufen

Ich habe versucht, eine Operation durchzuführen (setParent) auf ein Objekt in Python (eine Instanz einer Klasse, die von einer anderen Klasse erbt - um genau zu sein,QtGui.QLabel), aber während der Laufzeit wurde der obige Fehler ausgelöst. Das Objekt selbst hat einige Felder mit tatsächlichem Inhalt (überprüft beim Debuggen), aber aus irgendeinem Grund konnte ich es nicht "verwenden". Was bedeutet der Fehler und wie kann ich ihn beheben? Für einige zusätzliche Informationen sage ich, dass das Objekt von einer statischen Methode zurückgegeben wurde, bevor ich diese Operation darauf ausführen wollte.

Die Unterklasse hat a__init__() eigene Funktion:

def __init__(self, image, father):
        super(AtomicFactory.Image, self).__init__(father)
        self.raw_attributes = image.attributes
        self.attributes = {}
        father.addChild(self)
        self.update()

Jetzt habe ich einen ähnlichen Code geschrieben, einen einfachen, der den gleichen Fehler in der Zeile hattewidget.setParent(mw) als das Fenster verschoben wurde.

#!/usr/bin/env python
import sys
import copy
from PyQt4 import QtCore, QtGui

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    main_widget=QtGui.QWidget()
    widget = QtGui.QPushButton('Test')
    widget.resize(640, 480)
    widget.setParent(main_widget)
    widget.move(0, 0)
    widget2=QtGui.QPushButton('Test2')
    widget2.i=0
    widget2.resize(600, 200)
    widget2.setParent(main_widget)
    widget2.move(640, 0)
    def onResize(event):
        print event
        mw=copy.deepcopy(main_widget)
        widget.setParent(mw)
        widget2.setParent(mw)
        widget.move(0, 0)
        widget2.move(640, 480)
        main_widget_width=main_widget.width()
        widget_width=widget.width()
        width2=main_widget_width-widget_width
        height2=widget2.height()
        widget2.resize(width2, height2)
        widget2.move(640, 0)
    main_widget.resizeEvent=onResize
    def onClick():
        size=(widget2.width(), widget2.height())
        if(widget2.i%2==0):
            widget2.resize(int(size[0]/2), int(size[1]/2))
        else:
            widget2.resize(size[0]*2, size[1]*2)
        widget2.i+=1
    QtCore.QObject.connect(widget, QtCore.SIGNAL('clicked()'), onClick)
    main_widget.show()
    sys.exit(app.exec_())

Was war das Problem?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage