python Matplotlib Tkinter-->tab切换3

环境
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.messagebox as messagebox
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)def __init__(self, canvas_, window_):NavigationToolbar2Tk.__init__(self, canvas_, window_)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')# 创建选项卡控件
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()
toolbar1 = MyNavigationToolbar(canvas1, tab1)
toolbar1.update()
toolbar1.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5)
canvas1.get_tk_widget().pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
notebook.add(tab1, text='图表1')# 创建第二个选项卡
tab2 = ttk.Frame(notebook)
fig2 = plt.figure()
plt.plot([3, 2, 1], [6, 5, 4])
canvas2 = FigureCanvasTkAgg(fig2, master=tab2)
canvas2.draw()
toolbar2 = MyNavigationToolbar(canvas2, tab2)
toolbar2.update()
toolbar2.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5)
canvas2.get_tk_widget().pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
notebook.add(tab2, text='图表2')notebook.pack(fill=tk.BOTH, expand=True)window.mainloop()

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

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

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

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

相关文章

this、闭包与作用域

this、闭包与作用域 this指针详解 函数的this关键字在JavaScript中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别。在绝大多数情况下,函数的调用方式决定了this的值(运行时绑定)。 this关键字是函数运行时自动生成的一个内…

MySQL认证方法介绍

阅读本文之前请参阅----MySQL 数据库安装教程详解(linux系统和windows系统) MySQL数据库的认证方法对于确保数据安全和维护系统完整性至关重要。在MySQL中,有多种认证方法可供选择,每种方法都有其特定的用途和配置方式。本文将详细…

2024.1.9-1.24

2024.1.9 TUE 类路径 feign远程调用 content-service的test调用media-api的如下接口,用来上传图片 nginx的代理 如上图,proxy_pass 后面跟的代理到的地址后面须有/否则不生效!!!! content-service定义…

C++的发展历史、简介及应用

文章目录 一、C的来历及诞生背景二、C的每个版本时间三、C的详细应用领域 一、C的来历及诞生背景 C是一种编程语言,它是在C语言的基础上发展而来的。 C的作者:C的创始人是丹尼斯里奇(Dennis Ritchie)和贝尔实验室的团队。他们在2…

医学试纸条图像处理技术

医学试纸条图像处理是一个重要的领域,它涉及到从医学试纸条上提取和分析信息的各种技术。这里是一些常见的工作步骤: 一、图像预处理:在处理任何图像之前,通常需要进行预处理步骤,以改善图像质量并准备后续分析。这可…

ETH Denver见!来参加DAO的领袖和爱好者的活动吧

我们将和 DAOBase 在美国丹佛举办 DAO 领袖和爱好者的盛会——“去中心化对话:DAO 治理的新时代”活动! 随着加密货币和区块链技术的快速发展,DAO 已成为数字经济不可或缺的一部分。目前,已有超过 10 万个 DAO,拥有超…

算法刷题 DAY60

647.回文子串 int countSubstrings(char* s) {int res0;int lenstrlen(s);bool dp[len][len];for(int i0;i<len;i){for(int j0;j<len;j){dp[i][j]false;}}for(int ilen-1;i>0;i--){for(int ji;j<len;j){if(s[i]s[j]){if(j-i<1){dp[i][j]true;res;}else {if(dp[…

Go语言必知必会100问题-05 接口污染

接口污染 在Go语言中&#xff0c;接口是我们设计和编写代码的基石。然而&#xff0c;像很多概念一样&#xff0c;滥用它是不好的。接口污染是指用不必要的抽象来编写代码&#xff08;刻意使用接口&#xff09;&#xff0c;使得代码更难以理解。这是具有不同习惯&#xff0c;特…

qt creator5.15.2用的是什么版本的图形api?

Qt Creator 5.15.2 使用的图形API取决于配置和目标平台。 Qt Creator是一个跨平台的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于Qt应用程序的开发。它支持多种编译器和开发工具链&#xff0c;并且可以针对不同的平台和设备进行应用程序的编译和调试。在Qt 5…

Rust-windows安装环境

文章目录 前言一、Using rustup (Recommended)二、配置vscode解决办法&#xff1a;在终端依次运行如下两条指令&#xff1a; 总结 前言 Rust学习系列&#xff0c;之前介绍了macOS环境下的rust安装方式macOS rust安装。这篇学习windows的rust安装方式。 提示&#xff1a;以下是…

Cocoa Touch 框架及其步骤

Cocoa Touch 框架是 Apple 为 iOS 应用开发提供的一套原生开发工具包&#xff08;SDK&#xff09;&#xff0c;它包含了一系列用于构建 iOS 应用程序的 API 和服务。使用 Cocoa Touch 框架&#xff0c;开发者可以创建具有丰富用户界面和流畅交互体验的应用程序。 构建应用界面…

【STM32备忘录】【STM32WB系列的BLE低功耗蓝牙】一、测试广播配置搜不到信号的注意事项

文章目录 一、预备知识&#xff1a;二、准备工具&#xff1a;三、FUS和无线协议栈更新流程四、广播例程测试五、DEBUG输出调试 一、预备知识&#xff1a; WB系列是双核单片机&#xff0c;用户写M4&#xff0c;无线协议栈使用M0新买到手的单片机&#xff0c;需要自己刷入使用的…

TF-IDF,textRank,LSI_LDA 关键词提取

目录 任务 代码 keywordExtract.py TF_IDF.py LSI_LDA.py 结果 任务 用这三种方法提取关键词&#xff0c;代码目录如下&#xff0c; keywordExtract.py 为运行主程序 corpus.txt 为现有数据文档 其他文件&#xff0c;停用词&#xff0c;方法文件 corpus.txt 可以自己…

DP读书:《半导体物理学(第八版)》(一)绪论 3min速通

DP读书&#xff1a;《半导体物理学&#xff08;第八版&#xff09;》刘恩科 3min速通半导体物理之绪论 DP读书&#xff1a;《半导体物理学&#xff08;第八版&#xff09;》刘恩科绪论第一章 半导体中的电子状态1.1 半导体的晶格结构和结合性质1.1.1 金刚石型结构和共价键1.1.2…

代码随想录算法训练营day37 | 738.单调递增的数字、 968.监控二叉树

738.单调递增的数字 暴力超时&#xff0c;需要找到规律&#xff0c;比如98结果为89&#xff0c;214结果为199&#xff0c;从后向前遍历&#xff0c;如果i-1位>i位&#xff0c;则i-1位减一&#xff0c;后面其他位都改为9 class Solution:def monotoneIncreasingDigits(self…

探索未来:人工智能的前沿技术与应用

探索未来&#xff1a;人工智能的前沿技术与应用 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;作为一项前沿技术&#xff0c;正日益深入到我们的生活和工作中。在未来&#xff0c;人工智能将扮演着越来越重要的角色&#xff0c;影响着我们的社会、经…

Linux 内核和操作系统发行版的关系

目录 1. 查看当前&#xff08;Linux&#xff09;操作系统的内核版本 2. 查看当前&#xff08;Linux&#xff09;操作系统的发行版本 2.1. 典例 3. 内核和操作系统的关系&#xff1f; 4.参考 1. 查看当前&#xff08;Linux&#xff09;操作系统的内核版本 uname -r 系统将…

Java static final 常量详解

1. static 可以用来修饰 成员变量——类变量成员方法——类方法内部类——静态内部类&#xff0c;不能修饰普通类 因为由static修饰&#xff0c;均存在方法区中。 1.1 类变量 修饰变量时&#xff0c;变量属于类&#xff0c;不属于实例对象&#xff0c;直接使用 类名.变量…

yaml-cpp开源库使用

源码下载&#xff1a;https://github.com/jbeder/yaml-cpp 1.yaml-cpp编译 步骤主要如下&#xff1a;进入源码目录后 mkdir build cd build cmake … make make install 2.代码示例 #include "funset.hpp" #include <string> #include <fstream> #i…

MySQL 的存储引擎有哪些?它们各自有什么特点?解释一下 ACID 是什么?在 MySQL 中如何保证 ACID?

MySQL 的存储引擎有哪些&#xff1f;它们各自有什么特点&#xff1f; MySQL 支持多种存储引擎&#xff0c;每种引擎都有其特定的使用场景和特性。以下是一些常见的 MySQL 存储引擎及其特点&#xff1a; InnoDB&#xff1a; 事务安全&#xff1a;支持 ACID 事务。 行级锁定&…