【问题标题】:Python tkinter freezes when trying to use matplotlib to save an image尝试使用 matplotlib 保存图像时 Python tkinter 冻结
【发布时间】:2013-08-26 20:41:43
【问题描述】:

我有一个基本的 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 来打开一个窗口(只需要保存一个图),所以我有点困惑为什么会这样。

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

【问题讨论】:

    标签: python matplotlib tkinter


    【解决方案1】:

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

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

    当您导入 pyplot 时,您正在导入大量说服功能(请参阅 Which is the recommended way to plot: matplotlib or pylab?),其中包括用于交互式 tok 的 gui 系统

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多