5

QApplication オブジェクトをインスタンス化した後、IPython シェルの動作が遅くなります。たとえば、最初からやり直したとしても、次のコードを実行すると、シェルが十分に遅くなり、再起動する必要があります。

from PyQt4 import QtGui
app = QtGui.QApplication([])

それが提出されるとすぐに、私のタイピングは2、3秒遅れます。私のコンピューターは素晴らしいものではありませんが、利用可能なメモリはまだ十分にあり、影響を受けているように見えるのは Python シェルだけです。デフォルトの python インタープリターと ipython インタープリターの両方を試しましたが、結果は同じでした。助言がありますか?

更新:また、魔法のコマンドを使用して ipython でスタンドアロンの pyqt "Hello World" プログラムを実行しようとしました%runが、結果の "Hello World" ウィンドウを閉じた後に制御が ipython に返されると、同じ効果がありました。シェルの動作が遅くなり、タイピングが 2 ~ 3 秒遅くなり始めました。

4

1 に答える 1

4

これは役立つかもしれません:

QtCore.pyqtRemoveInputHook()

QtCore モジュールが初めてインポートされると、Python 入力フックがインストールされます (つまり、Python の PyOS_InputHook 変数の値が設定されます)。これにより、アプリケーションの実行中にインタープリター プロンプトでコマンドを入力できます。その後、新しい Qt オブジェクトを動的に作成し、既存の Qt オブジェクトのメソッドを呼び出すことができます。

入力フックは、特定のタイプのアプリケーション、特に異なる手段で同様の機能を提供するアプリケーションで問題を引き起こす可能性があります。この関数は、PyQt によってインストールされた入力フックを削除します。

入力フックは、pyqtRestoreInputHook() 関数を使用して復元できます。

http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qtcore.html#pyqtRemoveInputHook

于 2013-01-25T10:24:40.643 に答える