博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tkinter内嵌Matplotlib系列(一)之解读官网教材
阅读量:7230 次
发布时间:2019-06-29

本文共 2826 字,大约阅读时间需要 9 分钟。

目录

目录

前言

当有一天,你所学的东西连成一条线。那会是一种什么样的体会?

以前学习tkinter,现在学习matplotlib,当tkinter遇上matplotlib会不会产生火花嘞。

今天我们开始学习再tkinter里内嵌matplotlib,实现自定制的绘图和自定制的窗体。

(一)小目标

我们先来看一下,本小节最终的效果

1.首页卷面:

01.png

2.绘制一条函数曲线:

02.png

3.绘制多条曲线:

03.png

(二)官方教材

1.对GUI框架的支持:

(1):

该页面内容比较大,不容易找到需要的内容。可以再侧旁的目录下-找到"Embedding Matplotlib in graphical user interfaces",便是。

05.png

(2)各种GUI说明截图:

04.png

2.内嵌于tkinter的说明文档:

(1)

(2)实例源代码:

import tkinterfrom matplotlib.backends.backend_tkagg import (    FigureCanvasTkAgg, NavigationToolbar2Tk)# Implement the default Matplotlib key bindings.from matplotlib.backend_bases import key_press_handlerfrom matplotlib.figure import Figureimport numpy as nproot = tkinter.Tk()root.wm_title("Embedding in Tk")fig = Figure(figsize=(5, 4), dpi=100)t = np.arange(0, 3, .01)fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.canvas.draw()canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)toolbar = NavigationToolbar2Tk(canvas, root)toolbar.update()canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)def on_key_press(event):    print("you pressed {}".format(event.key))    key_press_handler(event, canvas, toolbar)canvas.mpl_connect("key_press_event", on_key_press)def _quit():    root.quit()     # stops mainloop    root.destroy()  # this is necessary on Windows to prevent                    # Fatal Python Error: PyEval_RestoreThread: NULL tstatebutton = tkinter.Button(master=root, text="Quit", command=_quit)button.pack(side=tkinter.BOTTOM)tkinter.mainloop()# If you put root.destroy() here, it will cause an error if the window is# closed with the window manager.

(3)实例的输出效果:

06.png

(三)对官方教程的解读

以下是本人对官方教程的解读,有出错之处,还请大佬们多多指出。

# 导入tkinter模块import tkinter# 创建画布需要的库from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg# 创建工具栏需要的库from matplotlib.backends.backend_tkagg import NavigationToolbar2Tk# 快捷键需要的模块from matplotlib.backend_bases import key_press_handler# 导入绘图需要的模块from matplotlib.figure import Figure# 实例化一个根窗口与设置标题root = tkinter.Tk()root.wm_title("Embedding in Tk")# 画布的大小和分别率fig = Figure(figsize=(5, 4), dpi=100)# 利用子图画图axc = fig.add_subplot(111)axc.plot([1, 2, 3, 4, 5])# 创建画布控件canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.canvas.draw()# 显示画布控件canvas.get_tk_widget().pack()# 创建工具条控件toolbar = NavigationToolbar2Tk(canvas, root)toolbar.update()# 显示工具条控件canvas.get_tk_widget().pack()# 绑定快捷键函数def on_key_press(event):    print("you pressed {}".format(event.key))    key_press_handler(event, canvas, toolbar)# 调用快捷键函数canvas.mpl_connect("key_press_event", on_key_press)# 退出函数def _quit():    root.quit()    root.destroy()# 退出按钮控件button = tkinter.Button(master=root, text="Quit", command=_quit)button.pack(side=tkinter.BOTTOM)# 消息循环tkinter.mainloop()

作者:Mark

日期:2019/02/15 周五

转载于:https://www.cnblogs.com/zyg123/p/10385456.html

你可能感兴趣的文章
开发自定义JSF组件(1) HelloWorld
查看>>
设计模式学习——策略模式:模拟鸭子应用
查看>>
lucene4.7 分词器(三)
查看>>
linux下让tomcat以service方式运行(及使用service tomcat start)
查看>>
HTML模版
查看>>
观察者模式摘要
查看>>
我的友情链接
查看>>
xml中单双引号
查看>>
JQuery文件上传插件JQuery.upload.js的用法简介
查看>>
Megacli 工具
查看>>
HTML5 多文件选择和FileList
查看>>
spring-boot与log4j2整合
查看>>
对函数式编程的理解
查看>>
Tomcat源码分析----一个http请求的经历
查看>>
Unix-Linux 编程实践教程 第二章 小结
查看>>
.未来只有坚持自己的信念.
查看>>
TODO:Golang指针使用注意事项
查看>>
五大角色和主域控制器
查看>>
QTcpserver编程
查看>>
ScrollView + Listview 实现方案优选
查看>>