これは、次のgifで示されています。
通常のpythonreplでpyplotをインポートすると、pythonロケットアイコンが表示されますが、気が散るほど跳ね返ることはありません。 IPython内にインポートすると、アイコンが1分近く迷惑にバウンスします。
これは、HomebrewのPythonのフレームワークビルドを使用しています。
どのバックエンドを使用していますか? plt.ion()
または%matplotlib
役に立ちますか?
私のひざまずく/私が推測するようにこれを構成することは次のとおりです:IPythonがreadlineから切り離されると、 PyOS_InputHook
機構からも切り離されます。 プレーンなPythonの場合、GUIが起動(バウンスを開始)し、GUIコードがフックをインストールし、起動が完了すると、GUIメインループがインターコレートされて実行されるため、ロケットがバウンスを停止することを通知する方法を電話で通知します。担当者 IPythonでは、そのフックはまだインストールされていますが、IPythonはプロンプトツールキットを介して実行されているため、問題ではありません。 IPythonイベントループ統合を開始すると、GUIは電話をかけ、バウンスを停止します。
または、私はベースから大きく外れている可能性があります。
これはMacOSX
バックエンドを使用しています。 pyplot
インポートの後にplt.ion()
または%matplotlib
を使用してもバウンスは停止せず、パイプロットインポートを実行する前に%matplotlib
すると、アイコンがバウンスを開始します。
tkバックエンドで発生しますか?
いいえ、 TkAgg
のロケットアイコンはありません。
#9312にリンクされているままにしておきます
私はそれを理解しようとします。 @minrkにpingを実行します。
私はこれを言うつもりです:
if not window_count:
return
ウィンドウがない場合でもeventloop統合を実行する必要があるため、削除する必要があります...それは私にとっては機能しているようです。
別の方法は、ウィンドウがない場合でも、 inputhook(context)
が少なくとも1つのループを実行することを確認することです。
global at_least_once
if not window_count and not at_least_once:
at_least_once = True
return
@ngoldbaum試してみませんか?
また、最初のウィンドウができたらすぐにバウンドが止まると思いますか?
スクリーンレコーディングはまた、タイピングがリアルであるため私を幸せにし、私の恐ろしいタイピングについて罪悪感を感じさせません。
確かに、それを削除する
if not window_count:
return
ブロックは私のために問題を修正します。 そして、あなたが疑ったように、プロットを作成することはバウンスを止めます。
提出された#10150は、より資格のある人々のレビューを待ちます。
マシンがフリーズしていないことに気付くのに10秒かかりましたが、私が見ていたポインターは.gif内のポインターでした。
最も参考になるコメント
マシンがフリーズしていないことに気付くのに10秒かかりましたが、私が見ていたポインターは.gif内のポインターでした。