IDLE シェルでウィンドウを作成したり、ファイル ダイアログを表示しようとすると、何も開かず、シェルが再起動します。これは何かのバグですか?私はそれについて何も見つけることができません。私は PyQt (および Python 全般) は初めてですが、チュートリアルを正しく機能させることができました。最終日かそこらで、IDLE を開いて PyQt4、QtGui などをインポートし、QFileDialog.getOpenFileName のような単純なものを実行すると、シェルが再起動します。何か案は?
1 に答える
QApplication
PyQt から他のものを使用する前に、 が必要です。従ったチュートリアルのいくつかを読み直すか、さらにいくつかのことを行ってください。たとえば、これ。
上記のチュートリアルの最初のコード サンプルでは、次の行に特に注意してください (便宜上、チュートリアルのコメントを含めました)。
app = QtGui.QApplication(sys.argv)
すべての PyQt4 アプリケーションは、アプリケーション オブジェクトを作成する必要があります。アプリケーション オブジェクトは QtGui モジュールにあります。sys.argv パラメータは、コマンド ラインからの引数のリストです。Python スクリプトは、シェルから実行できます。これは、スクリプトの起動を制御する方法です。
と
sys.exit(app.exec_())
最後に、アプリケーションのメインループに入ります。イベント処理はこの時点から開始されます。メインループは、ウィンドウ システムからイベントを受け取り、それらをアプリケーション ウィジェットにディスパッチします。exit() メソッドを呼び出すか、メイン ウィジェットが破棄されると、メインループが終了します。sys.exit() メソッドは、クリーンな終了を保証します。アプリケーションがどのように終了したか、環境に通知されます。
exec_() メソッドにはアンダースコアがあります。これは、exec が Python のキーワードであるためです。したがって、代わりに exec_() が使用されました。
これらのことを忘れている可能性があります。または、これが通常、対話型シェルで実行中のイベント ループで PyQt を使用できないことを意味することに気付いていないかもしれません。ただし、そのためのトリックがあります。こちらを参照してください。