Zunächst verwende ich aus Kompatibilitätsgründen Windows 7-64 Bit und pyqwt5.2.0, pyqt4.5.4, numpy1.3.0, python2.6.2 32 Bit.
Wenn ich mein Skript ausführe, erscheint Folgendes:
QWidget: Must construct a QApplication before a QPaintDevice
Als ich im Internet nach Möglichkeiten suchte, das Problem zu beheben, bin ich auf qwidget
继承了qobject
和qpaintdevice
(几乎我使用的每个对象都继承了它),而qmainwindow
继承了qwidget
gestoßen. Ich habe auch festgestellt, dass einige statische Funktionen versuchen, einige Klassen zu verwenden, aber ich verstehe nicht ganz, was das bedeutet.
Wenn es jemand erklären könnte, wäre ich sehr dankbar.
ps: Wir entschuldigen uns für etwaige Übersetzungsfehler.
Aus Code-Sicht wird der Fehler durch Zeile 102 verursacht. Beim Laden eines Moduls erstellen Sie ein qwidget
(更准确地说是 qmainwindow
)。这发生在创建 qapplication
vor .
Außerdem weiß ich nicht, warum Sie diese Startvariable haben, da sie anscheinend nicht verwendet wird.
Wenn Sie die hellobegin
对象创建它,请将其移动到 __init__
-Methode verwenden möchten.
Herausgeber:
Wenn Sie beim Laden eines Moduls einen Begrüßungsbildschirm anzeigen möchten, müssen Sie die Anwendung über ein kleines, leichtes Modul starten. In diesem Modul werden Sie:
Damit alles reibungslos funktioniert, würde ich das Modul in einer separaten Funktion importieren und mit einem kleinen Trick sicherstellen, dass es erst startet, wenn die GUI bereit ist. Der Code sieht so aus:
from PyQt4.QtGui import QApplication from PyQt4.QtCore import QTimer def startApp(): import m1 import m2 wnd = createWindow() wnd.show() import sys app = QApplication(sys.argv) splash = createSplashScreen() splash.show() QTimer.singleShot(1, startApp) # call startApp only after the GUI is ready sys.exit(app.exec_())
wobei createsplashscreen
die Funktion ist, die den Begrüßungsbildschirm erstellt
Das obige ist der detaillierte Inhalt vonQWidget: QApplication muss vor QPaintDevice erstellt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!