tkinter内嵌Matplotlib系列(一)之解读官网教材

1.首页卷面:

2.绘制一条函数曲线:

3.绘制多条曲线:

03.png

(二)官方教材

1.对GUI框架的支持:

(1)官方网站

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

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

(2)各种GUI说明截图:

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中实现matplotlib,需要使用matplotlib的FigureCanvasTkAgg类。首先,导入必要的库,包括tkinter以及FigureCanvasTkAgg和matplotlib.pyplot。然后,创建一个tkinter窗口,并在其中添加一个画布。接下来,将matplotlib的图形对象绘制在画布上,然后使用pack()或grid()等方法将画布显示在窗口上。最后,使用mainloop()方法启动窗口的事件循环,以保持窗口的显示。以下是一个示例代码: ```python import tkinter as tk from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import matplotlib.pyplot as plt # 创建tkinter窗口 window = tk.Tk() # 创建一个画布 canvas = tk.Canvas(window, width=400, height=400) canvas.pack() # 创建一个matplotlib图形对象 fig, ax = plt.subplots() ax.plot([1, 2, 3, 4, 5], [1, 4, 9, 16, 25]) # 创建一个FigureCanvasTkAgg对象,并将图形对象绘制在画布上 canvas_widget = FigureCanvasTkAgg(fig, canvas) canvas_widget.draw() # 将画布显示在窗口上 canvas_widget.get_tk_widget().pack() # 启动窗口的事件循环 window.mainloop() ``` 这样就可以在tkinter窗口中显示matplotlib绘制的图形了。注意,需要安装相应的库才能运行上述代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [tkinter 显示matplotlib绘图](https://blog.csdn.net/qq_33267306/article/details/125587834)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python+mysql+tkinter+matplotlib的可视化学生成绩管理系统课程设计](https://blog.csdn.net/m0_56604317/article/details/128473414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [利用Tkintermatplotlib两种方式画饼状图的实例](https://download.csdn.net/download/weixin_38717450/13770205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值