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 打开一个窗口(只需要保存一个图),所以我对为什么会这样感到困惑。

(顺便说一句,我有两个线程正在运行(一个更新进度条,一个进行一些计算),尽管我很确定这不会影响任何事情)。

4

1 回答 1

2

您正在运行多个相互干扰的主事件循环。要么将 matplotlib 正确嵌入到您的 gui(示例)中,要么使用非交互式后端:

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

当您导入时,pyplot您正在导入一整套令人信服的功能(请参阅哪种是推荐的绘图方式:matplotlib 或 pylab?),其中包括用于交互式 tok 的 gui 系统

于 2013-08-26T20:49:39.427 回答