Tout d'abord, pour des raisons de compatibilité, j'utilise Windows 7-64 bits et pyqwt5.2.0, pyqt4.5.4, numpy1.3.0, python2.6.2 32 bits.
Lorsque j'exécute mon script, ceci apparaît :
QWidget: Must construct a QApplication before a QPaintDevice
En surfant sur Internet à la recherche de moyens de résoudre ce problème, j'ai trouvé qwidget
继承了qobject
和qpaintdevice
(几乎我使用的每个对象都继承了它),而qmainwindow
继承了qwidget
. J'ai également constaté que certaines fonctions statiques tentent d'utiliser certaines classes, mais je ne comprends pas très bien ce que cela signifie.
Si quelqu'un pouvait l'expliquer, je lui serais très reconnaissant.
ps : Nous nous excusons pour toute erreur de traduction.
Du point de vue du code, l'erreur est provoquée par la ligne 102. Lors du chargement d'un module, vous créez un qwidget
(更准确地说是 qmainwindow
)。这发生在创建 qapplication
avant .
De plus, je ne sais pas pourquoi vous avez cette variable de démarrage car elle ne semble pas être utilisée.
Si vous souhaitez utiliser la méthode hellobegin
对象创建它,请将其移动到 __init__
.
Éditeur :
Si vous souhaitez afficher un écran de démarrage lorsqu'un module est chargé, vous devez lancer l'application à partir d'un module petit et léger. Dans ce module, vous allez :
Pour que tout fonctionne correctement, j'importerais le module dans une fonction distincte et j'utiliserais une petite astuce pour m'assurer qu'il ne démarre que lorsque l'interface graphique est prête. Le code ressemble à ceci :
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_())
où createsplashscreen
est la fonction qui crée l'écran de démarrage
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!