tkinterFrame框架+标签框架LabelFrame+Toplevel窗口的使用
1.在tkinter中,Frame是一个容器小部件用于组织和管理其他小部件。它可以作为一个独立的可见区域,也可以作为其他小部件的父容器。
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as mbm = tk.Tk()
m.title("tkinter Listbox")
m.geometry('500x300')
m.resizable(0, 0)lb = tk.Label(text='Programming Languages', font=('times', 12, 'bold'), fg='#CD7054')
lb.pack()frame1 = tk.Frame(m)
frame1.pack()varLb = tk.Label(frame1, text='Popular Languages', font=('times', 10, 'bold'), fg='orange')
plotLb = tk.Label(frame1, text='Your Languages', font=('times', 10, 'bold'), fg='orange')
varLb.grid(row=0, column=0, columnspan=3, padx=5)
plotLb.grid(row=0, column=6, columnspan=3, padx=5)lbox = tk.Listbox(frame1, selectmode=tk.EXTENDED, height=8)
lbox.grid(row=1, column=0, columnspan=3, rowspan=5, sticky=tk.E, padx=10)
items = ["c", "c++", "c#", "go", "java", "javascript", "php", "python", "r", "swift"]
for i in items:lbox.insert('end', i) #
list = []
langCnt = 0def Add():cursel = lbox.curselection()curvar = lkLbox.get(0, tk.END)isexist = Falseif len(cursel) > 0:for i in cursel:lkLbox.insert('end', lbox.get(i))if lbox.get(i) in curvar:isexist = Trueif isexist:mb.showinfo('info', 'Add existing language(s)!')def Del():cursel = lkLbox.curselection()if len(cursel) > 0:for i in range(len(cursel) - 1, -1, -1):lkLbox.delete(cursel[i])def Clr():lkLbox.delete(0, tk.END)def Set():global listglobal curCntlist.clear()varturp = lkLbox.get(0, tk.END)if len(varturp) > 0:for var in varturp:list.append(var)else:mb.showwarning('Warning', 'No language is Selected!')langCnt = cntCbox.current()print(list)print(langCnt)btnAdd = tk.Button(frame1, width=6, text='>>', font=('times', 12, 'bold'), fg='green', command=Add)
btnAdd.grid(row=2, column=4, padx=10)btnDel = tk.Button(frame1, width=6, text='Del', font=('times', 12, 'bold'), fg='red', command=Del)
btnDel.grid(row=3, column=4, padx=10)btnClr = tk.Button(frame1, width=6, text='Clr', font=('times', 12, 'bold'), fg='red', command=Clr)
btnClr.grid(row=4, column=4, padx=10)lkLbox = tk.Listbox(frame1, selectmode=tk.EXTENDED, height=8)
lkLbox.grid(row=1, column=6, columnspan=3, rowspan=5, sticky=tk.W, padx=10)frame2 = tk.Frame(m)
frame2.pack(pady='10px')curCntLb = tk.Label(frame2, text='Languages number you master:', font=('times', 10, 'bold'), fg='purple')
curCntLb.grid(row=0, column=0, columnspan=3, padx=5)cntCbox = ttk.Combobox(frame2)
cntCbox['value'] = ('0', '1', '2', '3', '4', '5', '5+')
cntCbox.current(1)
cntCbox.grid(row=0, column=5, columnspan=3, padx=5)btnSet = tk.Button(m, text='Apply', font=('times', 12, 'bold'), fg='blue', command=Set)btnSet.pack(side=tk.BOTTOM, pady=5)
m.mainloop()
2.LabelFrame 控件具有框架功能以及显示标签的功能。默认情况下,它会在其子组件的周围绘制一个边框,并在其上方显示一个文本标题。使用 LabelFrame 可以方便地将多个控件组织在一起,并为它们提供一个视觉上的分组标记。
您提交的内容是:
李白
杜甫
import tkinter as tkdef get_msg():x = ""for j in cheakboxs:# 这里实际上是cheakboxs[j].get() == True# 如果被勾选的话传回来的值为True# 如果没有被勾选的话传回来的值为Falseif cheakboxs[j].get():x = x + persons[j] + "\n"print('您提交的内容是: ')print(x)
# 创建主窗口
root = tk.Tk()# LabelFrame标签框架
labelFrame = tk.LabelFrame(root, text='选择最喜欢的诗人')
persons = {0: '李白', 1: '杜甫', 2: '李清照', 3: '苏轼', 4: '辛弃疾'}
# 这里负责给予字典的键一个False或者True的值,用于检测是否被勾选
cheakboxs = {}
for i in range(len(persons)):# 这里相当于是{0: False, 1: False, 2: False, 3: False, 4: False}cheakboxs[i] = tk.BooleanVar()# 只有被勾选才变为Truetk.Checkbutton(labelFrame, text=persons[i], variable=cheakboxs[i]).grid(row=i + 1, sticky=tk.W)labelFrame.pack(padx=10, pady=5, ipadx=5, ipady=5)
button = tk.Button(root, text="提交", width=10, command=get_msg)
button.pack()
root.mainloop()
示例2

# @Author : 小红牛
# 微信公众号:WdPython
import tkinter
# 创建主窗口
root = tkinter.Tk()
textFirst = "欢迎登录"
photo = tkinter.PhotoImage(file='1.png')
Logo = tkinter.Label(root, image=photo, text=textFirst, compound=tkinter.BOTTOM)
Logo.pack()# LabelFrame标签框架
labelFrame = tkinter.LabelFrame(root, text="登录框")accountLabel = tkinter.Label(labelFrame, text="账号")
accountLabel.grid(row=0, column=0)accountEntry = tkinter.Entry(labelFrame)
accountEntry.grid(row=0, column=1)passWd = tkinter.Label(labelFrame, text="密码")
passWd.grid(row=1, column=0)passWdEntry = tkinter.Entry(labelFrame, show="*")
passWdEntry.grid(row=1, column=1)labelFrame.pack(padx=10, pady=5, ipadx=5, ipady=5)root.mainloop()
3.Toplevel 是 Tkinter GUI 库中的一个控件,它代表一个独立的顶级窗口。与主窗口(通常是 Tk() 实例)不同,Toplevel 窗口是一个弹出窗口,拥有自己的标题栏、边框等部件,并且可以独立于主窗口进行操作。

# @Author : 小红牛
# 微信公众号:WdPython
import tkinter as tk# 创建主窗口
root = tk.Tk()
root.title("Main Window")
root.geometry('160x80')# 创建一个按钮,点击时打开Toplevel窗口
def open_toplevel():top = tk.Toplevel(root)top.geometry('200x100')top.title("Toplevel Window")label = tk.Label(top, text="This is a toplevel window!")label.pack(pady=20)# 创建按钮并添加到主窗口
button = tk.Button(root, text="Open Toplevel", command=open_toplevel)
button.pack(pady=20)# 启动主循环
root.mainloop()
完毕!!感谢您的收看
----------★★历史博文集合★★----------
我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具

相关文章:
tkinterFrame框架+标签框架LabelFrame+Toplevel窗口的使用
1.在tkinter中,Frame是一个容器小部件用于组织和管理其他小部件。它可以作为一个独立的可见区域,也可以作为其他小部件的父容器。 import tkinter as tk import tkinter.ttk as ttk import tkinter.messagebox as mbm tk.Tk() m.title("tkinter L…...
C 语言中的 char 关键字详解
1. char类型 char类型用于存储单个字符,占用1个字节的内存空间。在C语言中,char类型可以用于存储ASCII码表中的任意字符,包括大小写字母、数字、标点符号等。例如: char ch A;在这个例子中,变量ch存储了字符A的ASCI…...
信息安全管理与评估赛题解析-应急响应(含环境)
服务器应急响应 文章目录 服务器应急响应题目:答案:192.168.1.7答案:Linux x86_64答案:shodan答案:DIRSEARCH答案:24/Apr/2022:15:26:42答案:2022答案:/var/www/html/footer.php答案:./prism答案:/root/.mal/prism答案:后门行为相关资源...
微服务-微服务Spring Security OAuth 2实战
1. Spring Authorization Server 是什么 Spring Authorization Server 是一个框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品提供了一个安全、轻…...
二次供水物联网:HiWoo Cloud助力城市水务管理升级
随着城市化的快速推进,二次供水系统作为城市基础设施的重要组成部分,其稳定运行和高效管理显得至关重要。然而,传统的二次供水管理方式在应对复杂多变的城市供水需求时,显得力不从心。为了破解这一难题,HiWoo Cloud平台…...
P1015 [NOIP1999 普及组] 回文数
题目传送门 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个十进制数 56,将 56 加 65(即把 56 从右向左读),得到 121 是一个…...
【MATLAB】兔子机器人动力学模型解读(simulink中的simscape的各模块介绍)
1、动力学模型 Rectangular Joint 控制平面上(x,y轴)的移动,去掉以后,机器人在原地翻滚不移动 Rigid Transform 坐标转换,B站视频已收藏 去掉,机体与地面贴合 此处的作用是设定机体的初…...
小程序配置服务器域名
要配置小程序的服务器域名,您需要在小程序后台进行以下步骤: 登录小程序后台,进入开发设置页面。找到服务器域名配置选项,点击添加域名。输入您的服务器域名,可以添加多个域名,包括请求域名、上传文件域名…...
探究全链路压力测试的含义与重要性
全链路压力测试是指对整个应用系统的各个环节或组件进行压力测试,以模拟实际生产环境中的用户负载和流量,评估系统在高负载条件下的性能表现。 1. 全链路压力测试的含义 全链路压力测试涉及系统的所有组件和环节,包括前端用户界面、应用服务器…...
代码随想录算法训练营day64 || 84. 柱状图中最大的矩形
单调栈,又一次经典来袭! LeetCode:84.柱状图中最大的矩形_哔哩哔哩_bilibili 首先补充昨天接雨水题目解法的更新,代码随想录 中给出双指针和单调栈的解法,其中所采用的思想是计算每一列可以容纳的雨水,非常…...
图的简单介绍
定义及术语 G(V,E):图G的顶点集为V,边集为E。分为有向图和无向图两类。 顶点的度:与该结点相连的边的条数。 出度:顶点的出边条数 入度:顶点的入边条数 顶点的权值称为点权,边的权值称为边权。 存储 1.邻…...
【C#小知识】c#中的delegate(委托)和event(事件)
今天来介绍一下delegate和event。delegate在c#中可以定义一个函数类型,可以将函数作为一个对象来使用。event在c#中则可以看做一个函数的集合,event中包含了一个或多个函数。 delegate using System;public class MyClass {//定义委托public delegate v…...
车规级存储芯片SPI NOR Flash
国产SPI NOR Flash厂家聚辰提供多种容量选择,可满足多种实时操作系统所需的不同存储空间;并且,拥有四种不同电压范围,分别为3V、1.8V、1.2V以及针对电池供电应用推出的1.65V~3.6V宽压供电的产品系列;同时,提…...
CSS轻松学:简单易懂的CSS基础指南
css基础 更多web开发知识欢迎访问我的专栏>>> 01-CSS初体验 层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容)。 书写位置:…...
06 Qt自绘组件:Switch动画开关组件
系列文章目录 01 Qt自定义风格控件的基本原则-CSDN博客 02 从QLabel聊起:自定义控件扩展-图片控件-CSDN博客 03 从QLabel聊起:自定义控件扩展-文本控件-CSDN博客 04 自定义Button组件:令人抓狂的QToolButton文本图标居中问题-CSDN博客 0…...
大语言模型LLM分布式训练:大规模数据集上的并行技术全景探索(LLM系列03)
文章目录 大语言模型LLM分布式训练:大规模数据集上的并行技术全景探索(LLM系列03)1. 引言1.1 大语言模型(LLM)的重要性及其规模化挑战1.2 分布式训练策略的需求 2. 分布式训练基础原理2.1 并行计算的基本概念与分类 3.…...
98.验证二叉搜索树
98.验证二叉搜索树 思路 1.一开始使用递归,想当前节点满足条件后,再使左右子树分别满足条件。失败,只考虑了节点与左右子树的大小,未考虑隔代节点的关系。 2.转变思路,使用中序遍历的方法,从第一个节点开…...
2月21日,每日信息差
🎖 素材来源官方媒体/网络新闻 🎄 10 家央企签订倡议书:将主动向社会开放人工智能应用场景 🌍 上海成为首个固定资产投资破万亿的一线城市 🌋 特斯拉扩建德国工厂的计划遭当地居民反对 🎁 加拿大公司利用木…...
android.text.BoringLayout.isBoring 的 NullPointerException
都是重写TextView.settext()函数导致的坑~ override fun setText(text: CharSequence?, type: BufferType?) {if (text.isNullOrEmpty()) {return}//业务代码super.setText(text, type)} java.lang.NullPointerException at android.text.BoringLayout.isBoring(BoringLayo…...
C++ 高频考点
1. C/C内存有哪几种类型? C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量&…...
C++函数模板:OOP中的万能利器
C 面向对象编程中的函数模板在C面向对象编程(OOP)中,类和对象是核心概念。函数模板是一种强大的特性,允许我们编写通用的、可复用的代码,适用于多种数据类型。结合OOP,函数模板可以用于类的方法中ÿ…...
Spring Boot 条件装配入门:一文搞懂 @ConditionalOnClass(附实战)
tips: Spring Boot 核心机制之 Conditional:从原理到实战(一次讲透) 一、前言 在使用 Spring Boot 的过程中,你可能会看到这样的注解: ConditionalOnClass 很多人第一次看到它,会有几个疑问&am…...
保姆级教程:从零在Mac上配置HarmonyOS PC的HNP构建环境(含Gitcode账户与SSH密钥关联详解)
从零构建HarmonyOS PC开发环境:Mac用户的完整工具链配置指南 当你第一次在Mac上尝试搭建HarmonyOS PC开发环境时,可能会被各种工具链配置和权限问题搞得晕头转向。这篇文章将带你一步步完成从Gitcode账户注册到最终构建成功的全过程,特别针对…...
2026届学术党必备的五大降AI率网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当前各类AIGC检测系统越来越精准,这时使用专业的降AIGC工具,能有效降…...
怎么部署OpenClaw?2026年华为云部署OpenClaw配置Coding Plan喂奶级流程
怎么部署OpenClaw?2026年华为云部署OpenClaw配置Coding Plan喂奶级流程。OpenClaw(前身为Clawdbot/Moltbot)作为开源、本地优先的AI助理框架,凭借724小时在线响应、多任务自动化执行、跨平台协同等核心能力,成为个人办…...
深入NRF52832 ESB协议栈:从状态机到PPI,剖析与NRF24L01通信的底层时序与避坑指南
深入NRF52832 ESB协议栈:从状态机到PPI的通信稳定性实战指南 1. 无线通信系统的核心挑战 在物联网和智能硬件领域,2.4GHz无线通信已成为设备互联的基础技术。NRF52832作为Nordic Semiconductor的旗舰级蓝牙低功耗SoC,其内置的Enhanced ShockB…...
职业深度解析:Data Alignment Specialist——确保多源数据语义一致性的协调者
一、职业定位(What & Why)1. 一句话定义与通俗类比专业定义:数据对齐专家负责确保来自不同来源、具备不同格式及标注标准的数据在语义、结构及时间维度上保持严格一致,从而避免模型训练过程中因数据冲突而产生学习偏差。类比解…...
从一次线上故障复盘:我是如何用Ceph的PG状态和CRUSH规则定位数据迁移问题的
从一次线上故障复盘:我是如何用Ceph的PG状态和CRUSH规则定位数据迁移问题的 凌晨3点17分,监控系统突然弹出一连串告警——集群IOPS跌至正常值的30%,部分业务请求开始超时。作为值班工程师,我立即登录Ceph集群查看状态,…...
FPGA显示进阶:不用专用芯片,如何用IO口模拟HDMI驱动640x480显示器?
FPGA显示进阶:用IO口模拟HDMI驱动640x480显示器的技术解析 在资源受限或高度定制化的FPGA应用场景中,如何突破专用芯片的限制,直接利用FPGA的通用IO实现高清视频输出?本文将深入探讨一种基于LVDS和TMDS协议的"软核"HDMI…...
2026最权威的AI论文网站实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要切实有效地把文本里 AI 生成的特征予以降低,就得从词汇挑选、句式架构以及逻辑…...
