python玄阶斗技–tkinter库

目录


一.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()                                                 
                                                                  

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年12月22日
下一篇 2023年12月22日

相关推荐