tkinter内嵌Matplotlib系列(一)之解读官网教材_Jack you123的博客-程序员秘密

技术标签: Tkinter  

(二)官方教材

1.对GUI框架的支持:

(1)官方网站

https://matplotlib.org/gallery/index.html

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

(1)官方网站

https://matplotlib.org/gallery/user_interfaces/embedding_in_tk_sgskip.html#sphx-glr-gallery-user-interfaces-embedding-in-tk-sgskip-py

(2)实例源代码:

import tkinter

from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
# Implement the default Matplotlib key bindings.
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure

import numpy as np


root = 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 tstate


button = 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.

(三)对官方教程的解读

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

 

# 导入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()

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38870388/article/details/106249610

智能推荐

Web编辑器上传图片word_M_Snow的博客-程序员秘密

由于工作需要必须将word文档内容粘贴到编辑器中使用但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解决这一问题发现不管什么编辑器只要将图片转换成base64后就可以直接使用(IE8及一下可能不支持),由于编辑器中添加word文档功能也只是自己用,因此可以忽略这种浏览器了找了很久,试用了很多编辑器,发现

【Docker学习基础知识(一)】一小时Docker教程_后端研发Marion的博客-程序员秘密

原文链接:https://blog.csphere.cn/archives/22Docker基础这篇基础文章是方便用户在使用cSphere平台之前,了解docker基础知识。针对已经有一定的Linux基础知识的用户。Docker是什么Docker是一个改进的容器技术。具体的“改进”体现在,Docker为容器引入了镜像,使得容器可以从预先定义好的模版(images)创建出来,并且...

java用学servlet吗_Servlet还有学习的必要吗?(手工搭建Servlet)_weixin_39628405的博客-程序员秘密

前言在初学Java web的时候,就曾听到过这样一种说法:java Web的演变过程大概可以分为4个阶段:jsp + Servlet + jdbcspring + struts2+ hibernate(ssh)spring + SpringMVC + mybatis(ssm)微服务阶段。所以学习 Java web,可以从第3个阶段开始学习,不用再去关注Servlet,那么Servlet是否还有学习...

图像拼接(八):拼接多幅图像+Matlab实现+Stanford Open Course_czl389的博客-程序员秘密

本博客与以下文档资料一起服用效果更佳。Stanford University CS 131 Computer Vision: Foundations and Applications【OpenCV】SIFT原理与源码分析-小魏的修行路Matlab源码地址:多幅图像拼接matlab实现-CSDN下载开始正文。梳理一下本篇博客图像拼接的原理:特征检测:SIFT角点检测特征描述:SIFT描述

Java工具 :SQL解析_东京易冷的博客-程序员秘密_java sql解析引擎

最近发现了一款好用的SQL解析工具,开发SQL处理类型的插件可以用到。Git地址:https://github.com/JSQLParser/JSqlParser

随便推点

eclipse配置Resin并导入项目_上岸第一剑先斩意中人的博客-程序员秘密

先下载项目,可以从svn或者git上拉取代码到本地将项目导入到eclipse中,如果在import项目的时候不允许勾选,可能在远程仓库中缺失.project文件,从别的项目复制一份,将里面项目信息修改即可,内容如下:<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>oa</name> <comment></comment> <p.

canal-admin1.1.14界面化安装配置canal集群详解_52fighting的博客-程序员秘密

安装准备虚拟机服务器四台192.168.23.128 (主机名mysql)192.168.23.132 (主机名spark01)192.168.23.133 (主机名spark02)192.168.23.134 (主机名spark03)canal.admin-1.1.4.tar.gzcanal.deployer-1.1.4.tar.gz下载地址 https://github.com...

关于SmartForm和ScriptForm的输出格式设置说明(转载)_clli5589的博客-程序员秘密

转自老吴,http://blog.csdn.net/CompassButton/archive/2006/10/20/1342619.aspx Syntax 说明 &field+& 对于字符变量设...

【萌新向】cartographer_ros Kinetic最新安装指南 2020-06_绍磊leo的博客-程序员秘密

cartographer_ros最新安装指南 2019-12首先说明,这篇文章于2019年12月写下,cartographer现在还在不断更新,也许这篇文档内容会失效,但是大体是一样的安装流程。一、硬件条件使用平台x86_64平台ROS发行版IndigoKineticLunarMelodic二、编译安装1. 先安装一些必要的安装工具:python-wstool、p...

Linux高级编程——匿名管道实现父子进程间通信 4. 编写程序实现以下功能: 利用匿名管道实现父子进程间通信,要求 父进程发送字符串“hello child”给子进程; 子进程收到父进程发送的数据_sky_share的博客-程序员秘密

4. 编写程序实现以下功能:利用匿名管道实现父子进程间通信,要求父进程发送字符串“hello child”给子进程;子进程收到父进程发送的数据后,给父进程回复“hello farther”;父子进程通信完毕,父进程依次打印子进程的退出状态以及子进程的pid。代码如下:#include<stdio.h>#include<stdlib.h>#inclu...

推荐文章

热门文章

相关标签