python玄阶斗技--tkinter库
目录
一.tkinter库介绍
二.功能实现
1.窗口创建
2.Button 按钮
3.Entry 文本输入域
4.text 文本框
5.Listbox 多选下拉框
8.Scale 滑块(拉动条)
9.Scroolbar 滚动条
10.Menu 菜单栏
11. messagebox 消息框
12.布局
一.tkinter库介绍
tkinter是python进行窗口视窗设计的模块,是python中一个比较简单的GUI编程库,对于大多数python学习者来说,tkinter还是挺容易上手的,而且tkinter还是python自带的库,无需下载就可以直接使用。python的GUI编程和java的GUL编程很相似,这里推荐:JAVA GUI编程
这里主要介绍tkinter几个功能部件,掌握之后自己编写一个GUI程序不成问题:
- Button 按钮功能模块
- Canv 画布,提供画图功能
- Checkbutton 复选框
- Entry 单行文本框
- Frame 框架,放置其他GUI元素的容器
- Labe 标签,用于显示文本或图片
- Listbox 列表框
- Menu 菜单项,提供选择项给用户选择
- Menubutton 菜单按钮,包含菜单的组件
- optionMenu 选择菜单
- Message 消息框
- Radiobutton 单选框
- Scale 进度条
- Scroollbar 滚动条
- Text 文本
messageBox 消息框
二.功能实现
1.窗口创建
窗口的创建包括导入tkinter库,定义窗口标题(title)和窗口大小(geometry),最后通过窗口循环显示mainloop()显示出来,例如:
import tkinter as tk
window=tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
# 循环显示
window.mainloop()
窗口:
2.Button 按钮
窗口我们已经创建了,现在我们来创建一个Button按钮,创建格式:
tk.Button(window_name,text='',command='回调功能')
例如:
import tkinter as tk
window=tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
# 按钮
bt=tk.Button(window,text='确定',bg='green')
bt.pack() # 窗口加载
# 循环显示
window.mainloop()
显示一个绿色按钮
3.Entry 文本输入域
格式:
tk.Entry(window_name,show=' ',font=('字体,大小 ')
其中show表示输入后的文本显示内容,如果show=‘*’,输入密文,不定义show表示明文输出
例如:
mport tkinter as tk
window=tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
entry=tk.Entry(window,font=('微软黑体',20))
entry1=tk.Entry(window,show='*',font=('微软黑体',20))
entry2=tk.Entry(window,show='@',font=('微软黑体',20))
entry.pack()
entry1.pack()
entry2.pack()
# 循环显示
window.mainloop()
效果:
4.text 文本框
text文本框和Entry都可以输入文本,只不过text是多行文本框,支持输入多行文本,而Entry是单行文本
格式:
tk.Text(window_name,height)
例如:
import tkinter as tk
window=tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
text=tk.Text(window,height=3)
text.pack()
# 循环显示
window.mainloop()
5.Listbox 多选下拉框
Listbox以下拉的方式通过多选框,格式:
tk.Listbox(window_name,listvable)
例如:
import tkinter as tk
window=tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
label=tk.Label(window,text='请选择:')
ver=tk.StringVar()
ver.set(('杨幂','刘亦菲','林志玲'))
lsitbox=tk.Listbox(window,listvariable=ver,height=4)
label.pack()
lsitbox.pack()
# 循环显示
window.mainloop()
6.Radiobutton 多选项按钮
多选按钮定义格式:
tk.radiobutton(window_name,text,variable,value,command)
例如:
import tkinter as tk
window=tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
label=tk.Label(window,text='请选择:')
var=tk.StringVar()
# 定义函数触发功能:
def select():label.config(text='你是一位'+var.get()+'强者!')
# command回调selec()函数,value和variable表示函数触发后将value的值给variable
rdiobutton=tk.Radiobutton(window,text='选项1',variable=var,value='斗皇',command=select)
rdiobutton1=tk.Radiobutton(window,text='选项2',variable=var,value='斗王',command=select)
rdiobutton2=tk.Radiobutton(window,text='选项3',variable=var,value='斗宗',command=select)
label.pack()
rdiobutton.pack()
rdiobutton1.pack()
rdiobutton2.pack()
# 循环显示
window.mainloop()
初始效果:
选择一个多选按钮后:
7.Checkbutton 多选按钮
checkbutton多选按钮比Radiobutton按钮高级,可以选择多个按钮,而后者只能选择一个,格式:
tk.Checkbutton=(window_name,text,variable,onvalue,offvalue,command)
例如:
import tkinter as tkwindow = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
label = tk.Label(window, text='请选择:')
var = tk.StringVar()# 定义函数触发功能:
def select():label.config(text='你是一位' + var.get() + '强者!')# command回调selec()函数,value和variable表示函数触发后将value的值给variable
rdiobutton = tk.Radiobutton(window, text='选项1', variable=var, value='斗皇', command=select)
rdiobutton1 = tk.Radiobutton(window, text='选项2', variable=var, value='斗王', command=select)
rdiobutton2 = tk.Radiobutton(window, text='选项3', variable=var, value='斗宗', command=select)
label.pack()
rdiobutton.pack()
rdiobutton1.pack()
rdiobutton2.pack()
label1 = tk.Label(window, text='可以多选', bg='green',width=20)
label1.pack()
var1 = tk.IntVar()
var2 = tk.IntVar()def option():if (var1.get() == 1) & (var2.get() == 0):label1.config(text='我爱数学!')elif (var1.get() == 0) & (var2.get() == 1):label1.config(text='我爱计算机')elif (var1.get() == 0) & (var2.get() == 0):label1.config(text='什么都不喜欢还学什么编程?')else:label1.config(text='未来可期!')# checkbutton参数和radiobutton参数差不多,onvalue表示选中,offvalue表示选不中,然后把值给variablecheckbutton = tk.Checkbutton(window, text='数学', variable=var1, onvalue=1, offvalue=0, command=option)
checkbutton1 = tk.Checkbutton(window, text='计算机', variable=var2, onvalue=1, offvalue=0, command=option)
checkbutton.pack()
checkbutton1.pack()
# 循环显示
window.mainloop()
初始:
选择效果:
祝大家未来可期!
8.Scale 滑块(拉动条)
Scale滑块就像调节电脑音量大小的滑块一样,如果要定义滑块,需要知道这几个参数:
- from_ 滑块起始位置
- to 结束位置
- lenght 长度
- showvalue 是否显示数值
- tickinterval 刻度单位
- orient 滑动方向,orient=tk.HORIZONTAL表示水平滑动
- lable lable标签,起提示作用
- resolution 精度
格式:
tk.Scale(window_name,label,from_,to,height,orient,showvalue,tickinterval,resolution)
例如:
import tkinter as tkwindow = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
lable=tk.Label(text='音量')
lable.pack()
scale=tk.Scale(window,label='垂直音量调节',from_=0,to=100,tickinterval=10,showvalue=True,length=150,resolution=0.01,orient=tkinter.VERTICAL)
scale1=tk.Scale(window,label='水平音量调节',from_=0,to=100,tickinterval=10,showvalue=True,length=200,resolution=0.01,orient=tkinter.HORIZONTAL)
scale.pack()
scale1.pack()
# 循环显示
window.mainloop()
效果:
9.Scroolbar 滚动条
滚动条要设置的两个步骤:
(1)设置要带有滑动条的标签的yscrollbarcommand为Scrooblbar.set()
(2)设置Scroolbar组件的command为要带滑动条标签的yview()
例如:
import tkinter as tk window = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
scrollbar=tk.Scrollbar(window)
text=tk.Text(window,yscrollcommand=scrollbar.set)
scrollbar.config(command=text.yview)
# scrollbar.pack(side='left',fill='y')
scrollbar.pack(side='right',fill='y')
text.pack(side='left')
# 循环显示
window.mainloop()
10.Menu 菜单栏
菜单栏创建:
(1)在窗口创建菜单项
menu_name=tk.Menu(window_name)
file_menu=tk.Menu(menu_name,tearoff=True/False)
(2)设置菜单栏选项
menu_name.add_cascade(label,file_menu)
(3)菜单栏选项添加内容
file_menu.add_command(label)
(3)窗口加载菜单栏
window.confing(menu=men_name)
import tkinter as tk
window = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
menubar=tk.Menu(window)
filemeun=tk.Menu(menubar,tearoff=True)
menubar.add_cascade(label='设置',menu=filemeun)
filemeun.add_command(label='时间')
filemeun.add_command(label='语言')
filemeun.add_separator() # 分隔线
filemeun.add_command(label='大小')
filemeun1=tk.Menu(menubar,tearoff=False)
menubar.add_cascade(label='编辑',menu=filemeun1)
filemeun2=tk.Menu(menubar,tearoff=False)
menubar.add_cascade(label='运行',menu=filemeun2)
window.config(menu=menubar)
# 循环显示
window.mainloop()
11. messagebox 消息框
messagebox使用首先要导入模块:import tkinter.messagebox,使用格式:
tkinter.messagebox.消息类型(title='',message='')
部分消息类型如下:
import tkinter as tk
window = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
import tkinter.messagebox
tkinter.messagebox.showinfo(title='消息',message='hello world!hello time!')
tkinter.messagebox.showwarning(title='警告',message='警告!时间已不多')
tkinter.messagebox.showerror(title='错误',message='编译错误')
tkinter.messagebox.askquestion(title='问题',message='还有什么问题吗')
tkinter.messagebox.askyesno(title='选择',message='是否继续学习')
tkinter.messagebox.askokcancel(title='取消',message='是否取消会议?')
# 循环显示
window.mainloop()
12.布局
这里的布局有grid方格布局,pack方位布局和place自定义布局
grid方格布局:
grid(row,column,padx,pady,ipadx,ipady)
其中row和column分别表示行和列,padx和pady分别表示单元格上下间距和左右间距,ipadx和ipady分别表示单元格内元素的左右间距和上下间距
例如:
import tkinter as tk
window = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
for i in range(3): for j in range(3): tk.Label(window,text='@').grid(row=i,column=j,padx=10,pady=10,ipadx=10,ipady=10)
# 循环显示
window.mainloop()
pack方位布局:
pack我们之前写代码一直在用,它主要原来设置标签的位置,它的参数有:top,bottom,left,right
import tkinter as tk
window = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
label_top=tk.Label(text='上')
label_bottom=tk.Label(text='下')
label_left=tk.Label(text='左')
label_right=tk.Label(text='右')
label_top.pack(side='top')
label_bottom.pack(side='bottom')
label_left.pack(side='left')
label_right.pack(side='right')
# 循环显示
window.mainloop()
place 自定义布局
格式:
place(x,y,anchor)
其中anchor表示锚点,各个方位的锚点如下:
例如:
import tkinter as tk window = tk.Tk()
# 标题
window.title('hello world')
# 大小
window.geometry('500x300')
tk.Label(window,text='NW').place(x=400,y=200,anchor='nw')
# 循环显示
window.mainloop()
相关文章:

python玄阶斗技--tkinter库
目录 一.tkinter库介绍 二.功能实现 1.窗口创建 2.Button 按钮 3.Entry 文本输入域 4.text 文本框 5.Listbox 多选下拉框 6.Radiobutton 多选项按钮 7.Checkbutton 多选按钮 8.Scale 滑块(拉动条) 9.Scroolbar 滚动条 10.Menu 菜单栏 11. messagebox 消息框 12…...

【MySQL】MySQL的介绍MySQL数据库及MySQL表的基本操作
文章目录数据库的介绍什么是数据库数据库分类MySQL的介绍数据库的基本操作数据库的操作创建数据库查看所有数据库选中指定的数据库删除数据库常用数据类型数值类型字符串类型日期类型表的操作创建表查看指定数据库下的所有表查看指定表的结构删除表小练习数据库的介绍 什么是数…...
【每日随笔】社会上层与中层的博弈 ( 技术无关、没事别点进来看 | 社会上层 | 上层与中层的保护层 | 推荐学习的知识 )
文章目录一、社会上层二、上层与中层的保护层三、推荐学习的知识一、社会上层 社会上层 掌握着 生产资料 和 权利 ; 社会中层 是 小企业主 和 中产打工人 ; 上层 名额有限 生产资料所有者 : 垄断巨头 , 独角兽 , 大型企业主 , 大型企业股东 , 数量有限 ;权利所有者 : 高级别的…...

Cookie 和 Session的区别
文章目录时间:2023年3月23日第一:什么是 Cookie 和 Session ?什么是 Cookie什么是 Session第二:Cookie 和 Session 有什么不同?第三:为什么需要 Cookie 和 Session,他们有什么关联?第四&#x…...

leetcode使用vscode调试C++代码
leetcode使用vscode调试C代码 这里记录一下大体思路吧,关于细节配置放上别的博主的链接,他们讲的更好 vscode只是编辑器,相当于记事本,需要下载minGW提供的编译器和调试器 官方介绍: C/C拓展不包括编译器或调试器&…...

树莓派Linux源码配置,树莓派Linux内核编译,树莓派Linux内核更换
目录 一 树莓派Linux的源码配置 ① 内核源码下载说明 ② 三种方法配置源码 二 树莓派Linux内核编译 ① 内核编译 ② 编译时报错及解决方案(亲测) 三 更换树莓派Linux内核 操作步骤说明 ● dmesg报错及解决方案(亲测࿰…...
【C语言】深度讲解 atoi函数 使用方法与模拟实现
文章目录atoi使用方法:atoi模拟实现atoi 功能:转化字符串到整数 头文件: #include <stdlib.h> int atoi (const char * str); 参数 str:要转换为整数的字符串 返回值 如果转换成功,函数将转换后的整数作为int值…...

HTTPS的加密流程
1、概念HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层。HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协…...

STM32配置读取BMP280气压传感器数据
STM32配置读取BMP280气压传感器数据 BMP280是在BMP180基础上增强的绝对气压传感器,在飞控领域的高度识别方面应用也比较多。 BMP280和BMP180的区别: 市面上也有一些模块: 这里介绍STM32芯片和BMP280的连接和数据读取。 电路连接 BMP28…...

【Linux】 基础IO——文件(中)
文章目录1. 文件描述符为什么从3开始使用?2. 文件描述符本质理解3. 如何理解Linux下的一切皆文件?4. FILE是什么,谁提供?和内核的struct有关系么?证明struct FILE结构体中存在文件描述符fd5. 重定向的本质输出重定向输…...

蓝桥杯刷题冲刺 | 倒计时13天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.母牛的故事2.魔板1.母牛的故事 题目 链接: [递归]母牛的故事 - C语言网 (dotcpp.c…...

MIPI D-PHYv2.5笔记(5) -- 不同的PHY配置方式
声明:作者是做嵌入式软件开发的,并非专业的硬件设计人员,笔记内容根据自己的经验和对协议的理解输出,肯定存在有些理解和翻译不到位的地方,有疑问请参考原始规范看 规范5.7章节列举了一些常见的PHY配置,但实…...

【周末闲谈】文心一言,模仿还是超越?
个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言?(_)?三、文心一言的优势?😗😗😗四、文心一…...

《一“企”谈》 | 「佛山市政」:携手企企通,让采购业务数智化
近日,国家施工总承包壹级企业「佛山市市政建设工程有限公司」(以下简称“佛山市政”)正积极布局数字化建设工作,基于采购业务数智化,携手企企通打造了SaaS采购云平台。 01、岭南建筑强企 匠心铸造精品 …...

Spark运行架构
目录 1 运行架构 2 核心组件 2.1 Driver 2.2 Executor 2.3 Master & Worker 2.4 ApplicationMaster 3 核心概念 3.1 Executor 与 Core 3.2 并行度( Parallelism) 3.3 有向无环图( DAG) 4 提交流程 …...

基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别
目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活,为节能减排,减少电能…...
Spring Boot 框架总结
Spring Boot 框架总结 1. springboot的引言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的 初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不 再需要定义样板化的配置。通过这种方式࿰…...

【数据结构】第五站:带头双向循环链表
目录 一、链表的八种结构 二、带头双向循环链表的实现 1.链表的定义 2.链表的接口定义 3.接口的具体实现 三、带头双向循环链表的完整代码 四、顺序表和链表的区别 一、链表的八种结构 我们已经知道链表可以有以下三种分法 而这三种结构又可以排列组合,形成八…...
Springboot生成二维码
Springboot生成二维码整合 我们使用两种方式,去生成二维码,但是其实,二维码的生成基础,都是zxing包,这是Google开源的一个包,第一种是使用原始的zxing方式去实现,第二种是使用hutool来实现&…...

“独裁者”何小鹏,再造小鹏汽车
文丨智能相对论 作者丨沈浪 如果没有何小鹏,小鹏汽车将失去灵魂。 2014年,夏珩、何涛等人在广州组建小鹏汽车(当时还叫“橙子汽车”),何小鹏还只是股权投资人。 夏珩、何涛原任职于广汽,负责新能源汽车…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...