首先,出於相容性原因,我使用windows 7-64 位元和pyqwt5.2.0、pyqt4.5.4、numpy1.3.0 、python2.6.2 32 位元。
執行我的腳本時會出現:
QWidget: Must construct a QApplication before a QPaintDevice
上網,尋找一些方法來修復它,我發現qwidget
繼承了qobject
和qpaintdevice
(幾乎我使用的每個物件都繼承了它),而qmainwindow
繼承了qwidget
。我還發現某些靜態函數正在嘗試使用某些類,但我不太明白它的含義。
如果有人能解釋一下,我將不勝感激。
ps:對於任何翻譯錯誤,我們深表歉意。
從程式碼來看,錯誤是由於第 102 行造成的。在載入模組時,您建立了一個 qwidget
(更準確地說是 qmainwindow
)。這發生在創建 qapplication
之前。
另外,我不知道為什麼你有這個開始變量,因為它似乎沒有被使用。
如果您想使用 hellobegin
物件建立它,請將其移至 __init__
方法中。
編輯:
如果您想在載入模組時顯示啟動畫面,則需要由小型、輕量級模組啟動應用程式。在本模組中,您將:
為了讓一切順利進行,我會在單獨的函數中導入模組,並使用一個小技巧來確保它僅在 gui 準備好後才啟動。程式碼如下所示:
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_())
其中 createsplashscreen
是建立啟動畫面的函數
以上是QWidget:必須在 QPaintDevice 之前建構 QApplication的詳細內容。更多資訊請關注PHP中文網其他相關文章!