关闭控制台后Python Matplotlib运行时错误

时间:2013-06-22 15:55:52

标签: python matplotlib tkinter runtime-error

我正在尝试使用matplotlib在python tkinter上创建一个条形图。除了当我关闭tkinter(控制台)窗口时,它才能正常工作。

enter image description here

在关闭我的控制台之前,我已经关闭了我的tkinter窗口,因此我不确定它指的是哪个进程“仍在运行”。当我选择杀死它时,它会给我这个错误消息:

enter image description here

只有当我嵌入了matplotlib代码时才会发生这种情况。当我从我的脚本中删除我的matplotlib代码时,它不再给我这个消息并且工作正常。我的代码如下:

导入我的剧本

import Tkinter as tk
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
from datetime import datetime

Matplotlib相关代码

frame=tk.Frame(parent,width=900,height=500,bg='lightgreen',relief='groove',bd=1)
frame.place(x=10,y=10)

fig=plt.figure()
ax=fig.add_subplot(211)

canvas = FigureCanvasTkAgg(fig, master=frame)
canvas.show()
canvas.get_tk_widget().pack(side='top', fill='both', expand=1)
canvas._tkcanvas.pack(side='top', fill='both', expand=1)

toolbar = NavigationToolbar2TkAgg(canvas,frame )
toolbar.update()
canvas._tkcanvas.pack(side='top', fill='both', expand=1)

def on_key_event(event):
    key_press_handler(event, canvas, toolbar)

导致问题的原因是什么?

我使用的是带有python 2.7.4的windows8(64位),用于python 2.7的matplotlib 1.2.0(64位)

1 个答案:

答案 0 :(得分:3)

你有多个gui事件循环运行(来自你的TK,一个plt启动)。请勿导入pltmlab。有关如何正确嵌入Tk的信息,请参见http://matplotlib.org/examples/user_interfaces/embedding_in_tk.html

您基本上需要更改此行

fig=plt.figure()

fig = Figure()

并删除导入中的plt