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自动化办公 编程工具
在这里插入图片描述

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

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

相关文章

MSSQL渗透测试

目录 mssql数据库连接提权至服务器权限 拿到目标的IP地址,我们先对IP地址进行信息收集,收集信息资产,同时使用nmap对IP地址进行扫描 nmap -sC -sV IP从扫描的结果中,我们能知道目标服务器是windows操作系统,使用的是m…

DAY10-内容安全过滤技术概述

文件过滤技术流程: 应用行为控制技术具体:

W-TinyLFU 算法实现

前言 不同于常见的 LRU 或 LFU,Window TinyLFU 是一种非常高效的缓存设计方案。先来看下 LRU 和 LFU 算法的缺点: LFU 缺点: 需要为每个记录项维护频率信息,这将消耗大量的内存空间可能存在旧数据长期不被淘汰(一开…

让AI给你写代码,初体验(二)-写一个flask应用

这里我们准备让AI做一个稍微复杂一点任务,写一个前后应用,具体: 前台用html输入股票代码,后台通过akshare的接口程序获取该股票的实时价格,然后返回显示在html 我们先用AI对话看一下,AI会给我们什么编码建…

柯桥会计培训学校,会计职称考试,考中级会计怎么证明工作年限?

中级会计考试是会计从业人员的重要考试之一,对于中级考生来说,工作年限证明是必不可少的一步。因此,在考中级会计之前,需要对如何证明工作年限进行了解和掌握。 为大家整理了工作年限证明相关信息,一起来看看吧~ 一、…

Rocky Linux 运维工具 ls

一、ls 的简介 ​​ls​ 用于列出当前目录下的文件和目录,以及它们的属性信息。通过 ​ls​命令可以查看文件名、文件大小、创建时间等信息,并方便用户浏览和管理文件。 二、ls 的参数说明 序号参数描述1-a显示所有文件,包括以 ​.​开头的…

5G双域快网

目录 一、业务场景 二、三类技术方案 2.1、专用DNN方案 2.2、ULCL方案:通用/专用DNNULCL分流 2.3、 多DNN方案-定制终端无感分流方案 漫游场景 一、业务场景 初期双域专网业务可划分为三类业务场景,学校、政务、文旅等行业均已提出公/专网融合访问需…

【DDD】学习笔记-领域驱动设计对持久化的影响

资源库的实现 如何重用资源库的实现,以及如何隔离领域层与基础设施层的持久化实现机制,具体的实现还要取决于开发者对 ORM 框架的选择。Hibernate、MyBatis、jOOQ 或者 Spring Data JPA(当然也包括基于 .NET 的 Entity Framework、NHibernat…

Acwing周赛记录

很难得参加一次周赛hhhhh这次参加的是第144场周赛,一共有三道题 AcWing 5473. 简单数对推理 给定两个整数数对,每个数对都包含两个 1∼9 之间的不同整数。 这两个数对恰好包含一个公共数,即恰好有一个整数同时包含于这两个数对。 给定这两…

选择排序,冒泡排序,插入排序,快速排序及其优化

目录 1 选择排序 1.1 原理 1.2 具体步骤 1.3 代码实现 1.4 优化 2 冒泡排序 2.1 原理 2.2 具体步骤 2.3 代码实现 2.4 优化 3 插入排序 3.1 原理 3.2 具体步骤 3.3 代码实现 3.4 优化 4. 快速排序 4.1 原理 4.2 具体步骤 4.3 代码实现 4.4 优化 为了讲…

Linux课程四课---Linux开发环境的使用(vim编辑器的相关)

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

【MySQL】内置函数 -- 详解

一、日期函数 日期:年月日时间:时分秒 1、获得年月日 2、获得时分秒 3、获得时间戳 4、在日期的基础上加日期 5、在日期的基础上减去时间 6、计算两个日期之间相差多少天 7、获得当前时间 ⚪练习 (1)记录生日 (2&…

Flask入门一(介绍、Flask安装、Flask运行方式及使用、虚拟环境、调试模式、配置文件、路由系统)

文章目录 一、Flask介绍二、Flask创建和运行1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装介绍watchdog使用python--dotenv使用(操作环境变量) 七、虚拟环境介绍Mac/linux创建虚拟环境…

家政按摩上门服务小程序搭建

家政按摩上门服务小程序支持技师入驻申请,用户可以通过在线下单预约家政服务,并根据距离、价格、销量好评度等条件进行筛选和选择。用户可以选择技师进行预约,并填写自己的服务地点和时间,享受上门服务。同时,技师也可…

数据分析-Pandas数据探查初步柱状图

数据分析-Pandas数据探查初步柱状图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&am…

在Arcgis中删除过滤Openstreetmap道路属性表中指定highway类型道路

一、导出道路类型并分析 1. 导出道路类型 选中highway属性列,选择汇总→确定 2. 分析 用Excel打开输出表,包含的道路类型如下 0.空值’’ 车辆可行驶道路(和bfmap的并集) 空值(无定义道路) 二、…

基于Vue(提供Vue2/Vue3版本)和.Net Core前后端分离、强大、跨平台的快速开发框架

前言 今天大姚给大家推荐一款基于Vue(提供Vue2/Vue3版本)和.Net Core前后端分离、开源免费(MIT License)、强大、跨平台的快速开发框架,并且框架内置代码生成器(解决重复性工作,提高开发效率&a…

element el-table表格内容宽度自适应,不换行,不隐藏

2024.2.27今天我学习了如何用el-table实现表格宽度的自适应,当我们动态渲染表格数据的时候,有时候因为内容太多会出现挤压换行的效果: 我们需要根据内容的最大长度设置动态的宽度,这边我在utils里面封装了一个js: //…

求两个向量之间的夹角

求两个向量之间的夹角 介绍Unity的API求向量夹角Vector3.AngleVector3.SignedAngle 自定义获取方法0-360度的夹角 总结 介绍 求两个向量之间的夹角方法有很多,比如说Unity中的Vector3.Angle,Vector3.SignedAngle等方法,具体在什么情况下使用…

高性能Server的基石:reactor反应堆模式

业务开发同学只关心业务处理流程。但是我们开发的程序都是运行服务端server上,服务端server接收到IO请求后,是如何处理请求并最终进入业务流程的呢?这里不得不提到reactor反应堆模型。reactor反应堆模型来源于大师Doug Lea在 《Sacalable io …