PYQT : 내 파일에 더미 클래스 정의를 추가하면 애플리케이션이 충돌하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1233711

  •  22-07-2019
  •  | 
  •  

문제

아래 코드를 고려하십시오.

 #!/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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top