Python tkinter编程基础1(第十二章)

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是通过创建窗口而设置的对象

发布了59 篇原创文章 · 获赞 3 · 访问量 4759

猜你喜欢

转载自blog.csdn.net/CDZAllier/article/details/102579090