Pertama sekali, atas sebab keserasian, saya menggunakan windows 7-64 bit dan pyqwt5.2.0, pyqt4.5.4, numpy1.3.0, python2.6.2 32 bit.
Apabila saya menjalankan skrip saya ini muncul:
QWidget: Must construct a QApplication before a QPaintDevice
Melayari internet mencari beberapa cara untuk memperbaikinya, saya dapati qwidget
继承了qobject
和qpaintdevice
(几乎我使用的每个对象都继承了它),而qmainwindow
继承了qwidget
. Saya juga mendapati bahawa beberapa fungsi statik cuba menggunakan beberapa kelas, tetapi saya tidak begitu memahami maksudnya.
Sekiranya ada sesiapa yang boleh menerangkannya, saya amat berterima kasih.
ps: Kami memohon maaf atas sebarang kesilapan terjemahan.
Dari sudut pandangan kod, ralat disebabkan oleh baris 102. Apabila memuatkan modul, anda mencipta qwidget
(更准确地说是 qmainwindow
)。这发生在创建 qapplication
sebelum .
Selain itu, saya tidak tahu mengapa anda mempunyai pembolehubah permulaan ini kerana ia seolah-olah tidak digunakan.
Kalau nak guna kaedah hellobegin
对象创建它,请将其移动到 __init__
.
Editor:
Jika anda ingin memaparkan skrin percikan apabila modul dimuatkan, anda perlu melancarkan aplikasi daripada modul yang kecil dan ringan. Dalam modul ini anda akan:
Untuk memastikan semuanya berfungsi dengan lancar, saya akan mengimport modul dalam fungsi yang berasingan dan menggunakan sedikit helah untuk memastikan ia hanya bermula apabila gui sudah sedia. Kodnya kelihatan seperti ini:
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_())
di mana createsplashscreen
ialah fungsi yang mencipta skrin percikan
Atas ialah kandungan terperinci QWidget: QApplication mesti dibina sebelum QPaintDevice. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!