关闭控制台时出现 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 开始)。不要导入pltmlab。请参阅http://matplotlib.org/examples/user_interfaces/embedding_in_tk.html 了解如何正确嵌入Tk

你基本上需要改变这一行

fig=plt.figure()

fig = Figure()

并在您的导入中删除 plt

【讨论】:

以上是关于关闭控制台时出现 Python Matplotlib 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

服务器关闭时出现啥异常或 http 状态码

尝试重定向我的python脚本的输出时出现语法错误[关闭]

关闭 NamedPipeClientStream 时出现 System.Net.Sockets.SocketException

在浏览器上打开 python 文件时出现 500 Internal Server Error [关闭]

iOS 8 – 在设置关键窗口或关闭并立即呈现另一个视图控制器后快速呈现视图控制器时出现故障

发出 Axios GET 请求时出现无限循环 - 循环不会关闭