5

まず、互換性の理由から、PyQwt5.2.0、PyQt4.5.4、NumPy1.3.0、python2.6.2 32 ビットで Windows 7-64 ビットを使用します。

スクリプトを実行すると、次のように表示されます。

QWidget: Must construct a QApplication before a QPaintDevice

ネットサーフィンをして、それを修正する方法を探して、それをQWidget継承しQObjectQPaintDevice(そして、私が使用するほとんどすべてのオブジェクトによって継承されています)、およびQMainWindow継承しQWidgetました。また、いくつかの静的関数が何らかのクラスを使用しようとしていることもわかりましたが、それが何を意味するのかよくわかりません。

誰かがこれを説明してくれれば、本当に感謝しています。

PS: 翻訳に誤りがありましたら申し訳ありません。

4

2 に答える 2

6

コードから、エラーは行102が原因です。そこで、モジュールがロードされている間に、QWidget(より正確にはQMainWindow)を作成します。そして、これはが作成される前に発生します。QApplication

また、この開始変数は使用されていないようであるため、なぜそこにあるのかわかりません。

オブジェクトを使用して作成する場合HelloBeginは、メソッド内で移動します__init__

編集:

モジュールのロード中にスプラッシュ画面を表示する場合は、アプリケーションを小型で軽量のモジュールで起動する必要があります。このモジュールでは、次のことを行います。

  1. QApplicationを作成します
  2. スプラッシュ画面/メッセージボックスを開きます
  3. その後、他のモジュールをロードします

すべてがスムーズに機能するように、モジュールを別の関数にインポートし、小さなトリックを使用して、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スプラッシュ画面を作成する関数はどこにありますか

于 2012-07-12T16:59:00.437 に答える