PYQT : 내 파일에 더미 클래스 정의를 추가하면 애플리케이션이 충돌하는 이유는 무엇입니까?
문제
아래 코드를 고려하십시오.
#!/usr/bin/env python
from PyQt4 import QtCore, QtGui
import os,sys
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.listWidget = QtGui.QListWidget(None)
self.setCentralWidget(self.listWidget)
if __name__ == '__main__':
app = QtGui.QApplication (sys.argv)
mainWin = MainWindow ()
mainWin.show ()
sys.exit (app.exec_())
작동합니다. 이제 글로벌 범위에서 더미 클래스 (QTGUI 모듈의 클래스에서 상속)를 추가하면 ...
class MainWindow(QtGui.QMainWindow):
... # unchanged
class MyWidget(QtGui.QWidget):
def __init__(self):
super(MyWidget, self).__init__()
if __name__ == '__main__':
... # unchanged
... 스크립트를 시작하면 오류가 발생합니다.
TypeError : qmainwindow.setCentralWidget ()의 인수 1은 잘못된 유형이 있습니다.
이 오류 메시지는 완료된 수정에 연결할 수 없으므로 비밀입니다. 이 오류의 원인이 무엇인지 아이디어가 있습니까?
해결책
보고 된대로 문제를 재현 할 수 없습니다 : 다음 정확한 코드
from PyQt4 import QtCore, QtGui
import os, sys
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.listWidget = QtGui.QListWidget(None)
self.setCentralWidget(self.listWidget)
class MyWidget(QtGui.QWidget):
def __init__(self):
super(MyWidget, self).__init__()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
나에게는 잘 실행됩니다 (물론 빈 창을 보여줍니다). 그래서 나는 그것이 버전 세부 사항에 달려 있다고 생각합니다! Mac OS X 10.5.7에서 시스템 지원 파이썬 2.5.1을 사용하고 있으며
print QtCore.PYQT_VERSION_STR
PYQT의 버전 4.5.1에있는 것을 보여줍니다. 당신은 어때요?
다른 팁
나는 전에 PYQT와 함께 일하지 않았지만 여기에서 슈퍼 클래스의 생성자를 부르는 것을 잊지 않았습니까?
class MyWidget(QtGui.QWidget):
def __init__(self):
# Where is the call to QtGui.QWidget's init ?
pass
제휴하지 않습니다 StackOverflow