Python マクロを使用して拡張できるアプリケーションがあります。Python はあまり使用されないため、すべてのマクロについて、Python インタープリターを初期化し、マクロを実行し、インタープリターをファイナライズします。
PyQt5 を除いて、すべて正常に動作します。最初のマクロが終了すると、すべてのクラスが PyQt5 モジュールから消えます。これは、ファイナライズ時に静的変数と PyObject が破棄されるという問題だと思います。しかし、Python インタープリターを決して強制終了しない以外に何かすることはありますか?
これが私のマクロのコードです:
from PyQt5 import QtWidgets
def initialize(X, Y, Z, printed, parent):
X, ok = QtWidgets.QInputDialog.getDouble(parent, "Select radius", "X = ", float(X), 0, 10)
if not ok:
return False
return X, X, X, printed
最初の実行ではダイアログ ボックスが表示されますが、他の実行では次のエラーが表示されます。
Traceback (most recent call last):
File "[...]/macros/TestBlur.py", line 13, in initialize
AttributeError: 'module' object has no attribute 'QInputDialog'
編集:おそらくこれを確認する別の方法は、ライブラリimport_array
を初期化するために呼び出す必要があるのと同じ方法で、PyQt5 のすべてのクラスを明示的にインスタンス化する方法はありますか?numpy