1

いくつかの入力と送信ボタンを使用して、基本的な tkinter GUI を実行しています。送信ボタンが押されると、いくつかのデータが作成され、プロットが生成/保存されます:

import matplotlib.pyplot as plt
plt.plot(x1,y1,'go',x2,y2,'bo')
plt.savefig(filename)
plt.clf()

プロットは matplotlib で表示する必要はありません。保存する必要があるだけです。ただし、次の行に到達すると、tkinter GUI がフリーズします。

plt.plot(x1,y1,'go',x2,y2,'bo')

その時点で、別の tkinter ウィンドウがポップアップします (タイトルが「tk」の空白の灰色のウィンドウ)。matplotlib が何らかの形で tkinter に干渉しているようです。しかし、ウィンドウを開くのにmatplotlibは必要ありません(プロットを保存する必要があるだけです)ので、なぜこれが起こっているのか混乱しています。

(ちなみに、2 つのスレッド (プログレス バーを更新するスレッドと、何らかの計算を行うスレッド) を実行していますが、これは何の影響も及ぼさないはずだと確信しています)。

4

1 に答える 1

2

互いに干渉している複数のメイン イベント ループが実行されています。GUI に matplotlib を適切に埋め込むか ( examples )、非インタラクティブなバックエンドを使用します。

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot(x1,y1,'go',x2,y2,'bo')
plt.savefig(filename)
plt.clf()

インポートすると、対話型 tok 用の GUI システムを含むpyplot多数の説得関数をインポートします (「プロットする方法として推奨されるのは、matplotlib または pylab を参照してください」を参照)。

于 2013-08-26T20:49:39.427 に答える