Python应用——将Matplotlib图形嵌入Tkinter窗口
Python应用——将Matplotlib图形嵌入Tkinter窗口
目录
- Python应用——将Matplotlib图形嵌入Tkinter窗口
- 1 模块简介
- 2 示例代码
- 2.1 Matplotlib嵌入Tkinter
- 2.2 Matplotlib嵌入Tkinter并显示工具栏
1 模块简介
Tkinter是Python的标准GUI(图形用户界面)库,它提供了一个简单的方式来创建窗口、对话框、按钮、文本框等图形元素。非常适合用于创建简单的桌面应用程序,它提供了丰富的控件集,并且易于学习和使用。尽管 Tkinter 的外观可能不如一些现代的GUI库那么华丽,但它非常稳定,并且与Python的标准库紧密集成。
Matplotlib是一个Python的绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成具有出版品质的图形,适用于数据分析和可视化的各种场景。无论是简单的折线图还是复杂的三维可视化,Matplotlib都能轻松胜任。
2 示例代码
2.1 Matplotlib嵌入Tkinter
将Matplotlib图形嵌入Tkinter窗口是一个常见的任务,特别是在创建GUI应用程序时。可以使用matplotlib.backends.backend_tkagg模块来实现这一功能。
示例代码:
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
# 创建主窗口
root = tk.Tk()
root.title("Matplotlib in Tkinter")
# 创建一个 Matplotlib 图形对象
fig = Figure(figsize=(5, 4), dpi=100)
ax = fig.add_subplot(111)
ax.plot([0, 1, 2, 3], [10, 1, 20, 3])
# 创建一个 FigureCanvasTkAgg 对象,这是一个 Tkinter 画布,用于绘制 Matplotlib 图形
canvas = FigureCanvasTkAgg(fig, master=root)
# 将画布添加到 Tkinter 窗口
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
# 启动 Tkinter 主循环
root.mainloop()
运行结果:
2.2 Matplotlib嵌入Tkinter并显示工具栏
要显示Matplotlib的工具栏,可以使用matplotlib.backends.backend_tkagg.NavigationToolbar2Tk类。这个工具栏提供了缩放、平移和保存图形等功能。
示例代码:
import tkinter as tk
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
# 创建主窗口
root = tk.Tk()
root.wm_title("Embedding in Tk")
# 创建一个 Matplotlib 图形对象
fig = Figure(figsize=(5, 4), dpi=100)
ax = fig.add_subplot(111)
ax.plot([0, 1, 2, 3], [10, 1, 20, 3])
# 创建一个 FigureCanvasTkAgg 对象,这是一个 Tkinter 画布,用于绘制 Matplotlib 图形
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
# 将画布添加到 Tkinter 窗口
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
# 创建并添加 Matplotlib 工具栏
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
# 将工具栏添加到 Tkinter 窗口,通常放在画布的下方或上方
toolbar.pack(side=tk.BOTTOM, fill=tk.X)
# 启动 Tkinter 主循环
root.mainloop()
运行结果: