当前位置: 首页 > news >正文

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.布局


一.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报错及解决方案(亲测&#xff0…...

【C语言】深度讲解 atoi函数 使用方法与模拟实现

文章目录atoi使用方法&#xff1a;atoi模拟实现atoi 功能&#xff1a;转化字符串到整数 头文件&#xff1a; #include <stdlib.h> int atoi (const char * str); 参数 str&#xff1a;要转换为整数的字符串 返回值 如果转换成功&#xff0c;函数将转换后的整数作为int值…...

HTTPS的加密流程

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

STM32配置读取BMP280气压传感器数据

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

【Linux】 基础IO——文件(中)

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

蓝桥杯刷题冲刺 | 倒计时13天

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

MIPI D-PHYv2.5笔记(5) -- 不同的PHY配置方式

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

【周末闲谈】文心一言,模仿还是超越?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言&#xff1f;(_)?三、文心一言的优势&#xff1f;&#x1f617;&#x1f617;&#x1f617;四、文心一…...

《一“企”谈》 | 「佛山市政」:携手企企通,让采购业务数智化

近日&#xff0c;国家施工总承包壹级企业「佛山市市政建设工程有限公司」&#xff08;以下简称“佛山市政”&#xff09;正积极布局数字化建设工作&#xff0c;基于采购业务数智化&#xff0c;携手企企通打造了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 并行度&#xff08; Parallelism&#xff09; 3.3 ​​​​​​​有向无环图&#xff08; DAG&#xff09; 4 提交流程 …...

基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活&#xff0c;为节能减排&#xff0c;减少电能…...

Spring Boot 框架总结

Spring Boot 框架总结 1. springboot的引言 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化Spring应用的 初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不 再需要定义样板化的配置。通过这种方式&#xff0…...

【数据结构】第五站:带头双向循环链表

目录 一、链表的八种结构 二、带头双向循环链表的实现 1.链表的定义 2.链表的接口定义 3.接口的具体实现 三、带头双向循环链表的完整代码 四、顺序表和链表的区别 一、链表的八种结构 我们已经知道链表可以有以下三种分法 而这三种结构又可以排列组合&#xff0c;形成八…...

Springboot生成二维码

Springboot生成二维码整合 我们使用两种方式&#xff0c;去生成二维码&#xff0c;但是其实&#xff0c;二维码的生成基础&#xff0c;都是zxing包&#xff0c;这是Google开源的一个包&#xff0c;第一种是使用原始的zxing方式去实现&#xff0c;第二种是使用hutool来实现&…...

“独裁者”何小鹏,再造小鹏汽车

文丨智能相对论 作者丨沈浪 如果没有何小鹏&#xff0c;小鹏汽车将失去灵魂。 2014年&#xff0c;夏珩、何涛等人在广州组建小鹏汽车&#xff08;当时还叫“橙子汽车”&#xff09;&#xff0c;何小鹏还只是股权投资人。 夏珩、何涛原任职于广汽&#xff0c;负责新能源汽车…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...