PyQt: warum macht den Absturz der Anwendung eine Dummy-Klassendefinition in meiner Datei hinzufügen?

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

  •  22-07-2019
  •  | 
  •  

Frage

Betrachten Sie den Code unten:

 #!/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_())

funktioniert ok. Nun, wenn ich eine Dummy-Klasse hinzufügen (das erbt von einer Klasse QtGui-Modul) im globalen Bereich ...

class MainWindow(QtGui.QMainWindow):
... # unchanged

class MyWidget(QtGui.QWidget):
   def __init__(self):
        super(MyWidget, self).__init__()

if __name__ == '__main__':
... # unchanged

... wenn ich das Skript starten erhalte ich die Fehlermeldung:

  

Typeerror: Argument 1 von   QMainWindow.setCentralWidget () eine   ungültiger Typ

Diese Fehlermeldung ist für mich rätselhaft, wie ich es getan, um die Änderung keine Verbindung herstellen kann. Haben Sie eine Idee, was die Quelle dieses Fehlers sein könnte?

War es hilfreich?

Lösung

Kann das Problem nicht reproduzieren, wie berichtet: der folgenden genaue Code

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_())

läuft für mich ganz gut (ein leeres Fenster natürlich angezeigt). Also ich denke, es ist bis auf Versionen Details! Ich verwende System bereitgestellte Python 2.5.1 auf Mac OS X 10.5.7 und das Hinzufügen von einem

print QtCore.PYQT_VERSION_STR

zeigt, dass ich auf Version 4.5.1 von PyQt bin. Was ist mit dir?

Andere Tipps

Ich habe nicht mit PyQt vorher gearbeitet, aber du hast nicht vergessen, den Konstruktor der übergeordneten Klasse hier zu nennen?

class MyWidget(QtGui.QWidget):
   def __init__(self):
      # Where is the call to QtGui.QWidget's init ?
      pass
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top