关闭控制台时出现 Python Matplotlib 运行时错误
Posted
技术标签:
【中文标题】关闭控制台时出现 Python Matplotlib 运行时错误【英文标题】:Python Matplotlib runtime error upon closing the console 【发布时间】:2013-06-19 14:34:54 【问题描述】:我正在尝试使用 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 位)
【问题讨论】:
【参考方案1】:您有多个 gui 事件循环正在运行(一个来自您的 TK,一个来自 plt
开始)。不要导入plt
或mlab
。请参阅http://matplotlib.org/examples/user_interfaces/embedding_in_tk.html 了解如何正确嵌入Tk
。
你基本上需要改变这一行
fig=plt.figure()
到
fig = Figure()
并在您的导入中删除 plt
。
【讨论】:
以上是关于关闭控制台时出现 Python Matplotlib 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章
关闭 NamedPipeClientStream 时出现 System.Net.Sockets.SocketException
在浏览器上打开 python 文件时出现 500 Internal Server Error [关闭]