pyside-uic 생성 파이썬 클래스를 상속하는 대화 상자 클래스가 있지만 내 문제는 다른 기본 클래스를 추가 할 수 없다는 것입니다.PySide, PysideUIC 및 다중 상속
import sys
from PySide import QtGui
from mi_ui import Ui_Dialog
class Worker(object):
def __init__(self):
super(Worker, self).__init__()
self.data = 1
class MainDialog(QtGui.QDialog, Ui_Dialog, Worker):
def __init__(self):
super(MainDialog, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
dlg = MainDialog()
print dlg.data
dlg.show()
sys.exit(app.exec_())
내가 Worker
와 MainDialog
을 확장 할 때, 슈퍼 호출하지 않는 Worker
의 __init__
하기 때문에 인쇄 dlg.data 실패 "AttributeError가 '
내 유일한 해결 방법은 super를 무시하고 각각 __init__
을 수동으로 호출하는 것 같습니다.
QtGui.QDialog.__init__(self)
Worker.__init__(self)
내 유일한 해결책입니까?
이것은 Python 2.7 용입니다.
필자의 경험에 비추어 볼 때,'super()'는 PySide 래퍼와 Qt에서 작동하지 않는다. PyQt가 다른 점은 없다고 생각한다. 따라서'__init__'을 수동으로 호출하는 것이 유일한 방법 일 수 있습니다. 다이아몬드 모양의 상속을 피하거나 피하는 것이 좋습니다. – quazgar