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 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()
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表示选不中,然后把值给variable


checkbutton = 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 tk

window = 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()                                                 
                                                                  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

比肩ChatGPT的国产AI:文心一言——有话说

🔗 运行环境:chatGPT,文心一言 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好&am…

剑指offer-二维数组中的查找

文章目录题目描述题解一 无脑暴力循环题解二 初始二分法🌕博客x主页:己不由心王道长🌕! 🌎文章说明:剑指offer-二维数组中的查找🌎 ✅系列专栏:剑指offer 🌴本篇内容:对剑…

怎么设计一个秒杀系统

1、系统部署 秒杀系统部署要单独区别开其他系统单独部署,这个系统的流量肯定很大,单独部署。数据库也要单独用一个部署的数据库或者集群,防止高并发导致整个网站不可用。 2、防止超卖 100个库存,1000个人买,要保证不…

脉诊(切脉、诊脉、按脉、持脉)之法——入门篇

认识脉诊何谓脉诊?脉诊的渊源脉诊重要吗?脉诊确有其事,还是故弄玄虚?中医科学吗?如何脉诊?寸口脉诊法何谓脉诊? 所谓脉诊,就是通过把脉来诊断身体健康状况的一种必要手段。 …

ShowMeAI周刊 | AI独立开发者:帆船旅行但月入万刀;创业吧!新黄金时代来了;资本看好哪些创业方向;被AI震麻的一周again

这是ShowMeAI周刊的第8期。聚焦AI领域本周热点,及其在各圈层泛起的涟漪;拆解AI独立开发者的盈利案例,关注中美AIGC的创业者们,并提供我们的商业洞察。欢迎关注与订阅! | 👀日报&周刊合辑 ⌛ 『Danielle…

vue3 解决各场景 loading过度 ,避免白屏尴尬!

Ⅰ、前言 当我们每次打卡页面,切换路由,甚至于异步组件,都会有一个等待的时间 ;为了不白屏,提高用户体验,添加一个 loading 过度动画是 非常 常见的 ;那么这几种场景我们应该把 loading 加在哪…

JavaEE多线程-线程池

目录线程池Java标准库提供的线程池线程池的实现线程池 线程池和和字符串常量池, 数据库连接池一样, 都是为了提高程序的运行效率, 减少开销。 随着并发程度的提高, 当我们去频繁的创建和销毁线程, 此时程序的开销还是挺大的, 为了进一步提高效率, 就引入了线程池, 程序中所创建…

基于Java+SSM+Vue的旅游资源网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍:专注于Java技术领域和毕业项目实战 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例(200套) 目录 一、效果演示 二、…

Java语言-----封装、继承、抽象、多态、接口

目录 前言 一.封装 1.1封装的定义 1.2访问修饰符的使用 二.继承 2.1继承的定义 2.2继承的方法 2.3继承使用注意点 三.多态 3,1多态的定义 3.2动态绑定 3.3方法重写 3.4向上(向下)转型 四.抽象 4.1抽象的概述和定义 4.2抽象的使用 五…

python例程:AI智能联系人管理的程序

目录《AI智能联系人管理》程序使用说明主要代码演示代码工程下载路径《AI智能联系人管理》程序使用说明 在PyCharm中运行《AI智能联系人管理》即可进入如图1所示的系统主界面。 图1 系统主界面 说明:在运行程序前,先将当前的计算机连接互联网&#xff…

【网络】https协议

🥁作者: 华丞臧. 📕​​​​专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…

【深度学习】常见的梯度下降的方法

批量梯度下降(Batch Gradient Descent,BGD) 这个方法是当所有的数据都经过了计算之后再整体除以它,即把所有样本的误差做平均。这里我想提醒你,在实际的开发中,往往有百万甚至千万数量级的样本&#xff0c…

python基于django的校园拼车系统

开发语言:Python 框架:django Python版本:python3 数据库:mysql 数据库工具:Navicat 登录注册模块 1.管理员登录 2.普通用户注册登录,注册时要求密码必须用数字、字母、特殊字符起码两种,并且…

Python每日一练(20230327)

目录 1. 最大矩形 🌟🌟🌟 2. 反转链表 II 🌟🌟 3. 单词接龙 II 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日…

C生万物 | 校招热门考点 —— 结构体内存对齐

文章目录一、前言结构体偏移量计算:offsetof二、规则介绍例题的分解与细说三、习题演练1、练习①2、练习②四、为什么存在内存对齐?1、平台原因(移植原因)2、性能原因五、如何修改默认对齐数六、实战演练✍一道百度笔试题: offsetof 宏的实现&#x1f4…

自己设计的网站,如何实现分页功能?(详细代码+注释)

目录 前言 实现分页功能 需求分析 客户端开发 服务器开发 前后端交互——两种前端得到 文章总页数 的方法,那种更合适? 前言 你在设计网站的时候是否有过这样的烦恼:“我设计的网站怎么就是从上到下一条线内容全部展开,一点都…

IDEA 热部署,修改代码不用重启项目

热部署指在修改项目代码的时候不重启服务器让修改生效。安装JRebel and XRebelFile->Settings,然后Plugins-> Marketplace,输入JRebel,安装如下插件——JRebel and XRebel ,重启idea激活JRebel and XRebel第一行输入网址&am…

linux入门---环境变量

目录标题指令的本质如何不加./方法一方法二环境变量的重置在命令行上查看环境变量为什么会存在环境变量在程序中查看环境变量本地变量和环境变量环境变量的继承指令的本质 在使用linux的时候我们经常会使用很多指令比如说:ll指令,pwd指令,wh…

Java JDK详细安装配置(详细备忘版本)

目录概览一、下载安装二、环境配置三、常见问题一、下载安装 官方下载地址:点我去官网 java20 、java17如下: java8、java11如下 jre8 如下 以 java8 下载为例: 按步骤输入账号密码 之后就会跳出下载显示框 得到了文件名为 jdk-8u361-win…

单机分布式一体化是什么?真的是数据库的未来吗,OceanBase或将开启新的里程碑

一. 数据 我们先说说数据这个东西,这段时间的ChatGPT在全世界的爆火说明了一件事,数据是有用的,并且大量的数据如果有一个合适的LLM大规模语言模型训练之后,可以很高程度的完成很多意想不到的事情。 我们大多数的时候的注意力只…