当前位置: 首页 > article >正文

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()

运行结果:

在这里插入图片描述


http://www.kler.cn/a/470070.html

相关文章:

  • uniapp打包到宝塔并发布
  • vue 什么时候使用v-if 什么时候使用v-show
  • 大数据架构演变
  • 【前端系列01】优化axios响应拦截器
  • Java实现下载excel模板,并实现自定义下拉框
  • 78、使用爱芯派2_AX630C开发板 3.2T高有效算力 低功耗 支持AI-ISP真黑光实验
  • 分布式环境下定时任务扫描时间段模板创建可预订时间段
  • Unity学习笔记(七)使用状态机重构角色攻击
  • Qt菜单栏、工具栏、状态栏(右键)
  • Linux(Ubuntu24.04)安装Eigen3库
  • 公共数据授权运营机制建设(六大机制、存在问题、发展路径)
  • mongodb==安装prisma连接
  • (leetcode算法题)面试题 17.19. 消失的两个数字
  • 01、Redis初认识
  • 哈希表笔记
  • 卡诺图化简最小项表达式
  • leetcode 2274. 不含特殊楼层的最大连续楼层数 中等
  • 后台运行 Python
  • JVM实战—MAT的使用和JVM优化总结
  • pip error: microsoft visual c++ 14.0 or greater is required
  • 文档解析工具:如何将PDF文档转换为Markdown格式?
  • 【FlutterDart】 listView.builder例子二(14 /100)
  • 练习(继承)
  • 25考研|重邮软件工程复试攻略!
  • 数据结构-单链表及其应用
  • 2025课题推荐:低空飞行器在复杂环境中的导航与避障系统