1

我正在尝试使用 matplotlib 在 python tkinter 上创建条形图。一切正常,除了当我关闭 tkinter(console) 窗口时,它给了我这个消息。

在此处输入图像描述

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

在此处输入图像描述

只有当我嵌入了我的 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 位)

4

1 回答 1

3

您有多个 gui 事件循环正在运行(一个来自您的 TK,一个plt开始)。不要导入pltmlab. 有关如何正确嵌入Tk.

您基本上需要更改此行

fig=plt.figure()

fig = Figure()

并摆脱plt你的进口。

于 2013-06-22T16:04:02.763 回答