python将matplotlib嵌入到tkinter中的步骤详解
matplotlib窗口组成
tkinter是Python标准库中自带的GUI工具,使用十分方便,如能将matplotlib嵌入到tkinter中,就可以做出相对专业的数据展示系统,很有竞争力。
在具体实现之前,可以先看一下典型的 matplotlib
窗口
import numpy as np import matplotlib.pyplot as plt plt.plot(np.arange(100)) plt.show()
然后就看到了我们熟悉的plot图
这个图由两部分构成,分别是上面用于绘图的FigureCanvasTkAgg画布,以及下方的工具栏NavigationToolbar2Tk,二者存放在matplotlib.backends.backend_tkagg中,这两个组件在地位上和tkinter中的组件是等同的。
但除此之外还不够,因为画布并不意味着有图像,故而还要导入绘图窗口Figure,故而将matplotlib嵌入到tkinter中,最少需要使用下面的这些模块
import tkinter as tk import tkinter.ttk as ttk import matplotlib as mpl mpl.use('TkAgg') # 启用tkinter渲染matplotlib,从而可以嵌入到tkinter中 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import ( FigureCanvasTkAgg, NavigationToolbar2Tk) from matplotlib.figure import Figure import numpy as np
其中,mpl.use(‘TkAgg’)用于启用tkinter渲染matplotlib,从而可以嵌入到tkinter中。
tkinter布局
在了解原理之后,具体实现就不难了。在嵌入matplotlib之前,可先对tkinter窗口做下布局,代码如下所示,首先创建一个标题为"数据展示工具"的窗口root,并为其添加两个控件,分别是右侧的frmCtrl和左侧的frmFigure,前者用于添加控件,后者用于嵌入图像
root = tk.Tk() root.title("数据展示工具") frmCtrl = ttk.Frame(root, width=200) frmCtrl.pack(side=tk.RIGHT) frmFigure = ttk.Frame(root) frmFigure.pack(side=tk.LEFT, fill=tk.BOTH, expand=tk.YES)
嵌入图像
正如一开始所说的,matplotlib的绘图窗口由两部分构成,分别是绘图画布和工具栏,而绘图画布又要包含图像,所以先创建一个Figure,在将其导入到FigureCanvasTkAgg中。
fig = Figure() canvas = FigureCanvasTkAgg(fig,frmFigure) canvas.get_tk_widget().pack( side=tk.TOP,fill=tk.BOTH,expand=tk.YES) toolbar = NavigationToolbar2Tk(canvas,frmFigure, pack_toolbar=False) toolbar.update() toolbar.pack(side=tk.RIGHT)
其中,canvas是绘图画布,toolbar是工具栏。至此,就已经完成了图像的嵌入工作,接下来要做的,就是跑死循环,从而把这个嵌入了绘图工具的窗口显示出来
root.mainloop()
结果如下
这个图的左侧显然就是matplotlib引入的绘图画布,右侧则是frmCtrl,主要是为了更加清晰地证明,画布的确嵌入到了tkinter窗口中。
如果觉得不过瘾,可以在创建fig之后,再画一个图像上去,代码如下
ax = fig.add_subplot() ax.plot(np.arange(100))
然后再执行root.mainloop(),就可以得到下图
到此这篇关于python将matplotlib嵌入到tkinter中的步骤详解的文章就介绍到这了,更多相关python将matplotlib嵌入tkinter内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python 计算机视觉编程进阶之OpenCV 进行霍夫变换
霍夫变换(Hough)是一个非常重要的检测间断点边界形状的方法。它通过将图像坐标空间变换到参数空间,来实现直线与曲线的拟合,通过本篇文章我们来详细了解它2021-11-11解决python中遇到字典里key值为None的情况,取不出来的问题
今天小编就为大家分享一篇解决python中遇到字典里key值为None的情况,取不出来的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-10-10
最新评论