python Matplotlib Tkinter-->tab切换2

环境
python:python-3.12.0-amd64
包:
matplotlib 3.8.2
pillow  10.1.0
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
import tkinter as tk
import tkinter.ttk as ttk# 创建自定义工具栏类
class MyNavigationToolbar(NavigationToolbar2Tk):toolitems = [('Home','回到初始状态','home','home'),('Back', '后退', 'back', 'back'),('Home', '前进', 'forward', 'forward'),('Pan', '平移', 'move', 'pan'),('Zoom', '缩放', 'zoom_to_rect', 'zoom'),('Save', '保存', 'filesave', 'save_figure')]def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.custom_button_img1 = tk.PhotoImage(file='figure_pic1.png')  # 创建第一个图片按钮self.custom_button = ttk.Button(self, image=self.custom_button_img1, command=lambda: self.toggle_figure2())self.custom_button.pack(side=tk.LEFT)  # 添加按钮到工具栏上self.custom_button_img2 = tk.PhotoImage(file='figure_pic2.png')  # 创建第二个图片按钮self.custom_button2 = ttk.Button(self, image=self.custom_button_img2, command=lambda: print('111.'))self.custom_button2.pack(side=tk.LEFT)  # 添加按钮到工具栏上self.fig2_visible = False  # 记录figure2的可见性def toggle_figure2(self):if self.fig2_visible:canvas2.get_tk_widget().pack_forget()  # 隐藏figure2self.fig2_visible = Falseelse:canvas2.get_tk_widget().pack()  # 显示figure2self.fig2_visible = True# 创建 Tkinter 窗口
window = tk.Tk()
window.title("Matplotlib in Tkinter")# 设置窗口大小和位置
window.geometry('800x600')# 创建一个ttk.Notebook控件
notebook = ttk.Notebook(window)# 创建第一个选项卡
tab1 = ttk.Frame(notebook)
fig1 = plt.figure()
plt.plot([1, 2, 3], [4, 5, 6])
canvas1 = FigureCanvasTkAgg(fig1, master=tab1)
canvas1.draw()# 将画布放置在选项卡中
canvas1.get_tk_widget().pack(fill=tk.BOTH, expand=True)# 创建一个新的框架
frame1 = ttk.Frame(window)
frame1.place(relx=0, rely=0, anchor=tk.NW, relwidth=1, relheight=0.1)# 将工具栏放置在新框架中
toolbar1 = MyNavigationToolbar(canvas1, frame1)
toolbar1.update()
toolbar1.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5) # 设置高度# 创建第二个选项卡
tab2 = ttk.Frame(notebook)
fig2 = plt.figure()
plt.plot([3, 2, 1], [6, 5, 4])
canvas2 = FigureCanvasTkAgg(fig2, master=tab2)
canvas2.draw()# 将画布放置在选项卡中
canvas2.get_tk_widget().pack(fill=tk.BOTH, expand=True)# 创建一个新的框架
frame2 = ttk.Frame(window)
frame2.place(relx=0, rely=0, anchor=tk.NW, relwidth=1, relheight=0.1)# 将工具栏放置在新框架中
toolbar2 = MyNavigationToolbar(canvas2, frame2)
toolbar2.update()
toolbar2.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5) # 设置高度# 将两个选项卡添加到notebook中
notebook.add(tab1, text='图表1')
notebook.add(tab2, text='图表2')# 将notebook控件放置在窗口的顶部
notebook.place(relx=0, rely=0.1, relwidth=1, relheight=0.9)# 运行主循环
window.mainloop()

图片资源下载(分享-->python Matplotlib  Tkinter图片):

链接:https://pan.baidu.com/s/1vFOU52gG0bgK8RYuj-dzOg 
提取码:2oy0 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试redis篇-12Redis集群方案-分片集群

原理 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决: 海量数据存储问题高并发写的问题 使用分片集群可以解决上述问题,分片集群特征: 集群中有多个master,每个master保存不同数据每个master都可以有…

10 Redis之SB整合Redis

7. SB整合Redis Spring Boot 中可以直接使用 Jedis 实现对 Redis 的操作,但一般不这样用,而是使用 Redis操作模板 RedisTemplate 类的实例来操作 Redis。 RedisTemplate 类是一个对 Redis 进行操作的模板类。该模板类中具有很多方法,这些方…

【手机端测试】adb基础命令

一、什么是adb adb(Android Debug Bridge)是android sdk的一个工具 adb是用来连接安卓手机和PC端的桥梁,要有adb作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作。 Android的初衷是用adb这样的一个工具来协助开发人…

el-submenu is-opened 展开/闭合;el-submenu is-opened保持一个子菜单的展开控制

写了个mes系统目录 点击子菜单展开后&#xff0c;上一级菜单没有默认关闭。主流后台管理系统大部分都是保持一个子菜单关闭状态、 问度娘无果后&#xff0c;查询官网&#xff0c;一个属性搞定。 unique-opened 是否只保持一个子菜单的展开 加在 <el-menu 组件上即可 完整代…

LeetCode_Java_动态规划系列(1)(题目+思路+代码)

目录 斐波那契类型 746.使用最小花费爬楼梯 矩阵 120. 三角形最小路径和 斐波那契类型 746.使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。…

Leetcode202. 快乐数中为什么一定会循环?

他提示中是2的31次方&#xff1a; 相当于我就当它10个9&#xff0c;那么通过一次变换变成了81*10 810&#xff0c;所以他以后最后的范围也只能在[0,810]之间&#xff0c;810是最大的&#xff0c;然后任意一个数x&#xff0c;通过810次变换都不重复&#xff0c;那么811次变换那…

GIS之深度学习01:检测电脑是否包含英伟达GPU

GPU&#xff08;Graphics processing unit&#xff09;&#xff0c;中文全称图形处理器&#xff0c;我们听说的更多的CPU全称是central processing unit&#xff0c;中央处理器。研究深度学习和神经网络大都离不开GPU&#xff0c;在GPU的加持下&#xff0c;我们可以更快的获得模…

【QT+QGIS跨平台编译】之五十二:【QGIS_CORE跨平台编译】—【qgsexpressionlexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

Redis高可用三主三从集群部署(三种方式部署/18个节点的大集群)

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容使用宝塔面板搭建集群规划配置验证 使用docker搭建使用脚本搭建规划防火墙端口配置脚本redis.conf配置文件执行过程 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff…

c入门第二十五篇: 学生成绩管理系统优化(多线程)

前言 程夏&#xff1a;“你这个系统不好用啊&#xff1f;连上之后没有反应&#xff0c;是不是挂了&#xff1f;” 师弟&#xff1a;“不应该啊&#xff0c;我这边好好的&#xff0c;可以正常操作的。” 程夏&#xff1a;“我这边有问题&#xff0c;大概率还是你系统问题。你…

C语言标准库函数qsort( )——数据排序

大家好&#xff01;我是保护小周ღ&#xff0c;本期为大家带来的是深度解剖C语言标准库函数 qsort()&#xff0c;qsort()函数他可以对任意类型的数据排序&#xff0c;博主会详细解释函数使用方法&#xff0c;以及使用快速排序的左右指针法模拟实现函数功能&#xff0c;这样的排…

IT廉连看——C语言——分支语句

IT廉连看—分支语句 一、什么是语句 C语句可分为以下五类&#xff1a; 表达式语句 函数调用语句 控制语句 复合语句 空语句 本周后面介绍的是控制语句。 控制语句用于控制程序的执行流程&#xff0c;以实现程序的各种结构方式&#xff0c;它们由特定的语句定义符组成&…

Delphi 报错 Type androidx.collection.ArraySet is defined multiple times

Delphi 11 建立一个新的 Multi-Device Application 编译成app的时候报错 报错信息 [PAClient Error] Error: E7688 Unable to execute "E:\Program\Java\jdk1.8.0_301\bin\java.exe" -cp "e:\program\embarcadero\studio\22.0\bin\Android\r8-3.3.28.jar"…

FPGA_SD卡读写

一 SD卡 SD卡&#xff0c;安全数字卡&#xff0c;体积小&#xff0c;容量大&#xff0c;存储速度块&#xff0c;支持热插拔。 二 SD卡存储容量 SD卡类型协议规范容量等级SDSCSD1.0上限至2GBSDHCSD2.02GB至32GBSDXCSD3.032GB至2TB 三 SD卡速度等级 标志串列数据写入速度UHS…

MWC 2024丨美格智能发布全新5G-A模组及FWA解决方案,将5.5G带入现实

2月26日&#xff0c;在MWC 2024世界移动通信大会上&#xff0c;美格智能正式宣布推出5G-A模组SRM817WE以及全新的5G-A FWA解决方案&#xff0c;包含5G-A CPE解决方案SRT858M、5G-A MiFi解决方案SRT878H和5G-A ODU解决方案SRT853MX&#xff0c;旨在进一步提升网络性能&#xff0…

跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture

封装2DRenderer&#xff1a; Renderer.h: #include"ytpch.h" #include"Renderer.h" #include <Platform/OpenGL/OpenGLShader.h> #include"Renderer2D.h" namespace YOTO {Renderer::SceneData* Renderer::m_SceneData new Renderer::S…

python中“全局变量”之谜

全局变量&#xff0c;是不是以为着在整个程序中的值都是一样的&#xff0c;是不是都是同一个呢&#xff1f; 我们通过下面的例子来看全局"变量之变” 上面的程序运行结果如下&#xff1a; 从上面的运行结果可以看出&#xff1a;尽管变量num被声明为全局变量&#xff0c;在…

测试基础2:接口测试入门儿 哟呼开心

单元测试&#xff1a;一段代码的功能是否正确&#xff0c;在软件开发中进行的测试活动&#xff1b; 单元测试框架&#xff1a; java&#xff1a;junit&#xff0c;testNG c#:NUint python&#xff1a;pytest、unittest接口测试&#xff1a;检测外部系统与系统之间以及内部各个子…

腾讯云4核8g云服务器能承受多少人访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

MFC web文件 CHttpFile的使用初探

MFC CHttpFile的使用 两种方式&#xff0c;第一种OpenURL&#xff0c;第二种SendRequest&#xff0c;以前捣鼓过&#xff0c;今天再次整结果发现各种踩坑&#xff0c;好记性不如烂笔头&#xff0c;记录下来。 OpenURL 这种方式简单粗暴&#xff0c;用着舒服。 try {//OpenU…