python Matplotlib Tkinter-->tab切换1

环境
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):show_toolbar = kwargs.pop('show_toolbar', True)super().__init__(*args, **kwargs)if not show_toolbar:self.pack_forget()self.custom_button_img1 = tk.PhotoImage(file='figure_pic1.png')  # 创建第一个图片按钮self.custom_button1 = ttk.Button(self, image=self.custom_button_img1, command=lambda: self.toggle_figure2())self.custom_button1.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)  # 添加按钮到工具栏上def toggle_figure2(self):self.fig2_visible = not self.fig2_visibleif self.fig2_visible:canvas2.get_tk_widget().pack()else:canvas2.get_tk_widget().pack_forget()# 创建 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, show_toolbar=False)
toolbar2.update()
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.hqwc.cn/news/494280.html

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

相关文章

键盘锁住了怎么解锁?这4个方法轻松帮你解决!

“我在使用电脑输入文字时不知道按错了什么键,导致键盘锁住了。有什么简单的方法可以帮助键盘快速解锁吗?” 当我们在使用电脑时,突然发现键盘被锁住,无法输入任何字符,这无疑会让人感到困扰。但请别担心,这…

无刷电机的2种电流采样方式以及优缺点比较

低端电流采样: 在低端采样方式中,电流检测电阻(分流电阻)通常被放置在逆变器下桥臂MOSFET或IGBT的低端,即靠近电机绕组的地线侧。这种情况下,只有当对应相位的下管导通时,才能通过这个电阻来测量…

雾锁王国Enshrouded多人联机专用服务器配置要求

雾锁王国/Enshrouded服务器CPU内存配置如何选择?阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置,支持4人玩家畅玩,自带10M公网带宽,1个月90元,3个月271元,幻兽帕鲁服务器申请页面 https://t.aliyun.com…

Leetcode——hot3最长连续序列

最长连续序列 class Solution {public int longestConsecutive(int[] nums) {if(nums.length 0 || nums.length 1){return nums.length;}Arrays.sort(nums);int count 1;int max 1;for(int i 0; i < nums.length - 1; i){if(nums[i1] - nums[i] 1){count;if(count &…

【C++】---内存管理new和delete详解

一、C/C内存分布 C/C内存被分为6个区域&#xff1a; &#xff08;1&#xff09; 内核空间&#xff1a;存放内核代码和环境变量。 &#xff08;2&#xff09;栈区&#xff1a;向下增长&#xff08;存放非静态局部变量&#xff0c;函数参数&#xff0c;返回值等等&#xff09; …

理解npm run dev 和 npm run serve的区别

文章目录 1. 分析npm run2. dev与serve的区别 1. 分析npm run npm npm 是 Node.js 的包管理器&#xff0c;它允许你安装、更新、删除和管理 Node.js 的模块和应用程序。 run run 是 npm 的一个子命令&#xff0c;用于执行在 package.json 文件的 scripts 部分定义的脚本。 dev…

C#中字典Dictionary的实现原理

在 C# 中&#xff0c;字典的实现通常使用哈希表。Dictionary<TKey, TValue> 类就是 C# 中的哈希表实现之一。 哈希表的数据结构&#xff1a; Dictionary<TKey, TValue> 内部使用了哈希表的数据结构来存储键值对。哈希表通常是一个数组&#xff0c;每个数组元素通常…

导入arviz出现的错误

导入arviz时&#xff0c;很有可能出现 UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xba in position 2367: illegal multibyte sequence 这是因为我们的操作系统环境引起的。通过仔细阅读错误信息&#xff0c;可以定位出是pathlib.py中的read_text不传encoding参数…

OSI参考模型和TCP/IP网络参考模型

1、OSI参考模型 1.1 产生背景 为了解决网络之间的兼容性问题,实现网络设备间的相互通讯,国际标准化组织ISO于1984年提出了OSIRM(Open System Interconnection Reference Model,开放系统互连参考模型)。OSI参考模型很快成为计算机网络通信的基础模型。由于种种原因,并没有…

第二证券:买什么股比较安全?买股小技巧!

股票与基金、银行存款相比较&#xff0c;其危险性较高&#xff0c;不同类型的个股&#xff0c;其危险性有所不同&#xff0c;其中购买以下类型的个股&#xff0c;安全性相对来说要高一点&#xff1a; 1、权重股 权重股与中小盘股相比较&#xff0c;其流通盘较大&#xff0c;涨…

加购与心愿单:提升亚马逊产品排名的双重利器

作为亚马逊卖家&#xff0c;我一直在寻找提升产品排名和销量的方法。最近&#xff0c;我尝试了使用亚马逊鲲鹏系统来优化关键词排名和增加转化率&#xff0c;我想分享一下我的使用体验和反馈。 首先&#xff0c;我深入了解了亚马逊关键词排名的原理&#xff0c;意识到通过加购可…