2013-08-26 68 views
1

我有一个基本的tkinter GUI运行几个输入和一个提交按钮。当提交按钮被击中,一些数据被创建,并且曲线应该生成/保存:当试图使用matplotlib保存图像时,Python tkinter冻结

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

您有多个互相干扰的主事件循环。无论是在你的GUI(examples)适当地嵌入matplotlib,或使用非交互式后端:当您导入pyplot要导入的说服功能(见Which is the recommended way to plot: matplotlib or pylab?)整体转换,其中包括一个GUI系统

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

互动tok

+0

谢谢队友!得到它的工作 – kyphos