Python 编程 之 tkinter : 导航栏与局部页面切换

news2024/12/25 2:10:17
import tkinter as tk  
  
class App:  
    def __init__(self, root):  
        self.root = root  
        self.root.title("导航栏与局部页面切换")  
        self.root.geometry('800x500')
        self.root.minsize(width=800, height=300)
  
        # 创建导航栏  
        self.navbar = tk.Frame(self.root, bg='gray')  
        self.navbar.pack(fill=tk.BOTH, side=tk.TOP)  
  
        # 导航栏按钮  
        self.btn_page1 = tk.Button(self.navbar, bg='#ffffff', fg='#000000', text="页面1", command=self.show_page1)  
        self.btn_page2 = tk.Button(self.navbar, bg='#ffffff', fg='#000000', text="页面2", command=self.show_page2) 
        self.btn_page3 = tk.Button(self.navbar, bg='#ffffff', fg='#000000', text="页面3", command=self.show_page3)  
        self.btn_page4 = tk.Button(self.navbar, bg='#ffffff', fg='#000000', text="页面4", command=self.show_page4)  
		
		# 设置一行上的4个列,weight 是长度权重,这里设置为权重一样就是等长
        self.navbar.columnconfigure(0, weight=1)
        self.navbar.columnconfigure(1, weight=1)
        self.navbar.columnconfigure(2, weight=1)
        self.navbar.columnconfigure(3, weight=1)
        
        # row 行号,column 列号
		# sticky 指定了当网格的大小改变时,按钮将如何对齐。
		# "ew"代表"east and west",
		# 意味着按钮将填充其分配的行和列空间,从东(右)和西(左)两个方向填充。
        self.btn_page1.grid(row=0, column=0, sticky="ew")
        self.btn_page2.grid(row=0, column=1, sticky="ew")
        self.btn_page3.grid(row=0, column=2, sticky="ew")
        self.btn_page4.grid(row=0, column=3, sticky="ew")
        # 局部页面容器  
        self.content_frame = tk.Frame(self.root)  
        self.content_frame.pack(fill=tk.BOTH, expand=True)  
  
        # 页面内容  
        self.page1 = tk.Frame(self.content_frame, bg='#ffffff')  
        self.page2 = tk.Frame(self.content_frame, bg='#ffffff')
        self.page3 = tk.Frame(self.content_frame, bg='#ffffff')
        self.page4 = tk.Frame(self.content_frame, bg='#ffffff')
        # 自己加的标签
        self.label1 = tk.Label(self.page1, text="页面1", bg='yellow', fg='#000000', font=('微软雅黑', 16)).pack()
        self.label2 = tk.Label(self.page2, text="页面2", bg='yellow', fg='#000000', font=('微软雅黑', 16)).pack()
        self.label3 = tk.Label(self.page3, text="页面3", bg='yellow', fg='#000000', font=('微软雅黑', 16)).pack()
        self.label4 = tk.Label(self.page4, text="页面4", bg='yellow', fg='#000000', font=('微软雅黑', 16)).pack()
  
        # 初始显示页面1  
        self.show_page1()  
  
    def show_page1(self):  
        self.page1.pack(fill=tk.BOTH, expand=True)  
        self.btn_page1.config(fg='red')
        self.btn_page2.config(fg='#000000')
        self.btn_page3.config(fg='#000000')
        self.btn_page4.config(fg='#000000')
        self.page2.pack_forget()  # 隐藏页面2  
        self.page3.pack_forget()
        self.page4.pack_forget()
  
    def show_page2(self):  
        self.page2.pack(fill=tk.BOTH, expand=True)  
        self.btn_page2.config(fg='red')
        self.btn_page1.config(fg='#000000')
        self.btn_page3.config(fg='#000000')
        self.btn_page4.config(fg='#000000')
        self.page1.pack_forget()  # 隐藏页面1  
        self.page3.pack_forget()
        self.page4.pack_forget()


    def show_page3(self):  
        self.page3.pack(fill=tk.BOTH, expand=True)  
        self.btn_page3.config(fg='red')
        self.btn_page1.config(fg='#000000')
        self.btn_page2.config(fg='#000000')
        self.btn_page4.config(fg='#000000')
        self.page1.pack_forget()  # 隐藏页面1  
        self.page2.pack_forget()
        self.page4.pack_forget()



    def show_page4(self):  
        self.page4.pack(fill=tk.BOTH, expand=True) 
        self.btn_page4.config(fg='red')
        self.btn_page1.config(fg='#000000')
        self.btn_page2.config(fg='#000000')
        self.btn_page3.config(fg='#000000')
        self.page1.pack_forget()  # 隐藏页面1  
        self.page3.pack_forget()
        self.page2.pack_forget()


if __name__ == "__main__":  
    root = tk.Tk()  
    app = App(root)  
    root.mainloop()

效果展示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

TIM输出比较之PWM驱动直流电机应用案例

文章目录 前言一、应用案例演示二、电路接线图三、应用案例代码四、应用案例分析4.1 初始化PWM模块4.1.1 RCC开启时钟4.1.2 配置时基单元4.1.3 配置输出比较单元4.1.4 配置GPIO4.1.5 运行控制 4.2 PWM输出模块4.3 电机模块4.3.1 Motor初始化模块4.3.2 电机调速模块 4.4 主程序 …

0基础学习Python路径(21)Python NameSpaceScope

命名空间定义了在某个作用域内变量名和绑定值之间的对应关系,命名空间是键值对的集合,变量名与值是一一对应关系。作用域定义了命名空间中的变量能够在多大范围内起作用。 命名空间在 Python 解释器中是以字典的形式存在的,是以一种可以看得…

Linux Nvidia驱动一览

Unix Drivers | NVIDIAUnix Drivershttps://www.nvidia.cn/drivers/unix/

告别手动录入,自动化PDF转Excel工具精选

PDF文件可以跨平台高兼容,这就使得在很多需要保存页面版式的文件我们都用PDF格式进行传输。很多时候Excel文件也被这样转发,可是编辑却成为了问题,这时候要是能有pdf转换成excel的工具就能事半功倍了。 1.福昕PDF转换大师 链接一下>>…

【项目】微服务及时通讯系统:客户端环境搭建

1. 安装Qt6 下载在线安装工具 Qt6 相比 Qt5 在模块重组、图形渲染、性能优化和 C 标准支持方面都有显著改进,但不完全向后兼容,需要对旧代码进行调整。 Qt6项目中,一旦代码规模变大了,使用MinGW编译速度就会慢很多。MSVC&…

JavaWeb基础 -- Cookies与Session的区别

JavaWeb基础 – Cookies与Session的区别 1.内容简介 在Java开发面试过程中这类问题也是经常被面试官问到,因此本章将会讲解Cookies与Session的区别,与此同时也会顺带讲解Token、JWT的区别。 2.C/S会话 2.1 产生原因 HTTP协议是无状态的,即…

Linux权限管理应用实例

目录 权限管理应用实例1 权限管理应用实例2 权限管理应用实例3 权限管理应用实例1 有两个组police和bandit,四个用户jack,jerry,xh,xq。 权限管理应用实例2 创建这两个组还有四个用户,并且给这些用户设置密码。 …

C++ 设计模式——命令模式

C 设计模式——命令模式 C 设计模式——命令模式主要组成部分构建过程命令模式 UML 图UML 图解析 命令模式的优点命令模式的缺点命令模式适用场景总结完整代码 C 设计模式——命令模式 命令(Command)模式是一种行为型模式,它将请求封装为对象,从而使您能…

百度云语音识别demo验证

百度云语音识别调研 百度语音识别API: https://ai.baidu.com/ai-doc/SPEECH/il9mh8cjb 1: 注册登录百度账户. 2:打开控制台选择语音技术. 3: 领取免费额度(个人账户.企业账户不确定是否免费额度一样) 4: 由于开发测试使用,可以选择不需要包名. 5: 下载demo程序: https://g…

pat1074 k个一组反转链表

是我的错觉吗 直接把%d赋值给数组小标,不能把值副进去? 可是这样可以? 乱套了这 同样的代码 所以暂时将你眼睛闭了起来 所以还是好好老实两次赋值 。。。 写糊了已经 注意这句话 链表中部翻转: 不带dummy真的好麻烦且头…

苹果手机照片格式heic怎么改jpg?教你3招快速转换

苹果手机照片格式heic怎么改jpg?将苹果手机照片格式从HEIC转为JPG,在日常使用中带来了极大便利。HEIC格式虽高效节省空间,但兼容性不如JPG广泛。转为JPG后,照片能轻松在多数设备、软件和在线平台上分享、打印或编辑,无…

SmartGit-Git版本控制系统的图形化客户端

SmartGit: SmartGit是一款免费的、专业的Git版本控制系统的图形化客户端。它适用于Windows、Mac和Linux等多种操作系统,提供了直观的用户界面和丰富的功能。支持创建、克隆、推送、拉取、合并和管理Git仓库,以及强大的分支管理功能。还提供了…

武汉流星汇聚:亚马逊中国卖家精准布局,万圣节装饰热销引领潮流

随着秋风渐起,万圣节的脚步虽还远在三个月之后,但消费者对于节日氛围的营造与期待已悄然升温。在亚马逊这一全球电商巨头的平台上,万圣节相关产品的搜索热潮正以前所未有的速度席卷而来,为中国卖家提供了又一个展示实力、捕捉商机…

大模型概念入门:探索这一AI技术的奥秘

一、引言 ChatGPT、Open AI、大模型、提示词工程、Token、幻觉等人工智能的黑话,在2023年这个普通却又神奇的年份里,反复的冲刷着大家的认知。让一部分人彻底躺平的同时,让另外一部分人开始焦虑起来,生怕在这个人工智能的奇迹之年…

无人机搭载的高压喷水清洗技术详解

随着城市化进程的加速,高空建筑、桥梁、电力设施等清洁维护问题日益凸显。传统的人工清洗方式不仅效率低下、成本高昂,还存在高空作业安全风险。无人机搭载的高压喷水清洗技术应运而生,以其独特的优势成为解决这一难题的新方案。该技术通过无…

不看表了

前段时间重温了一遍刘德华在1992年拍的《赌城大亨-新哥传奇》,里面叶倩文唱的《不了情》,顾媚唱的太凄,小凤姐唱的太醇,而莎莉叶倩文唱的太有大时代风云际会儿女情长味道。 刘德华华仔和邱淑贞豆豆,合作拍摄的两部大佬…

网络空间安全中的数字孪生技术研究

源自:系统仿真学报 作者:任乾坤,熊鑫立,刘京菊,姚倩 注:若出现显示不完全的情况,可 V 搜索“人工智能技术与咨询”查看完整文章 人工智能、大数据、多模态大模型、计算机视觉、自然语言处理、数字孪生、深度强化学习…

软件工程造价师习题练习 19

1.在 A 系统中,用户可以对白名单进行新增、删除与查询的操作。在查询的过程中,用户在搜索框内录入关键字,这个“录入”可以识别为非基本过程。 正确 错误 在A系统中,用户对白名单进行新增、删除与查询的操作构成了系统的主要功能…

Scheme3.0标准之重要特性及用法实例(三十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…