tkinter的使用,就是图形化接口
我们以模拟登录为例:
第一步:导入tkinter拓展库,并创建一个窗口
from tkinter import *
# 创建一个窗口
win = Tk()#默认200*200,标题tk
#定义窗口大小
win.title('login')
win['height'] = 300
win['width'] = 300
print('打印win对象的属性',win.keys())
# 调用事件启用的方式mainloop,用来监听鼠标等一些事件
#也是启动消息循环
win.mainloop()
注:没有mainloop()事件,窗口就是一闪而过(也就是没有等鼠标执行的事件),并且该事件要放到所有组件的后面,其他组件才有效
第二部:创建组件
窗口中的组件,一般由三部分组成:
1. 设置变量值:
如:变量值对象=tkinter . 类型Var(value=)
注:value这里是设置默认值或不设置,里面还有其他属性
2. 组件关键字:
如:组件对象=tkinter. 组件(属性,variable=变量值对象,属性,等)
常用的组件有:
名称 | 关键字 |
标签 | Label |
文本框 | Entry |
复选框 | Checkbutton |
单选按钮 | Radiobutton |
按钮 | Button |
组合框 | ttk . Combobox |
列表框 | Listbox |
注:不同组件,属性不同,
3. 位置
如:组件对象 . place(x=,y=,width=,height=)
注:x,y相对于左上角的偏移量,后面的是组件的宽高设置
窗口上创建标签组件
labelName=tkinter.Label(text='用户名',bg='white')
#把组件放到指定位置,默认x=0,y=0
labelName.place(x=10,y=10,width=80,height=20)
labelPass=tkinter.Label(text='密码',bg='white')
labelPass.place(x=10,y=35,width=80,height=20)
注:x,y分别表示偏移量,且x与y的偏移始终从,顶端开始,也就是他包含了在他之前设置的组件的宽与高
窗口中创建文本框组件
varName=tkinter.StringVar(value='')#创建字符串变量,并关联文本框
entName=tkinter.Entry(width=80,textvariable=varName)
entName.place(x=100,y=10,width=150,height=20)
varPass=tkinter.StringVar(value='')#创建字符串变量,并关联文本框
entPass=tkinter.Entry(width=80,textvariable=varPass,show='*')#show设置文本显示方式
entPass.place(x=100,y=35,width=150,height=20)
窗口中创建复选框组件
#复选框
rememberMe=tkinter.IntVar(win,value=1)#设置默认选中
checkRemember=tkinter.Checkbutton(win,text='记住我',variable=rememberMe,onvalue=1,offvalue=0)
checkRemember.place(x=35,y=65,width=120,height=20)
注:onvalue=1,选中为1 ,offvalue=0,未选中为0
登录事件判断
通过变量对象或组件对象 . get()或 . set()方法来接受与传值
def login():
#获取用户名,密码
print('区别:',entName.get(),varName.get(),varName,entName)#这里这两个值是相等的
if varName.get()=='admin' and varPass.get()=='123456':
#弹出消息框
tkinter.messagebox.showinfo(title='恭喜',message='登陆成功!')
else:
tkinter.messagebox.showerror('警告',message='信息错误')
创建按钮组件
buttonOk=tkinter.Button(text='登录',command='login')
buttonOk.place(x=55,y=75,width=50,height=25)
注:command,是设置按钮单击事件处理函数login
最后一步:
#也是启动消息循环
win.mainloop()
注:这个是启用事件,一定放在最后一步; 这里win是通过创建窗口而设置的对象