tkinter编程实战
Python标准库tkinter是对Tcl/Tk的进一步封装,并提供了强大的跨平台图形用户界面(GUI)编程的功能。tkinter库学习手册
tkinter常用组件
组件名称 | 说明 |
---|---|
Button | 按钮 |
Canvas | 画布 |
Checkbutton | 复选按钮 |
Entry | 单行文本框 |
Frame | 框架,可作为其他组件的容器 |
Label | 标签 |
Listbox | 列表框 |
Menu | 菜单 |
Message | 多行文本框 |
Radiobutton | 单选按钮 |
Scrollbar | 滚动条 |
Toplevel | 常用来创建窗口 |
实例1(模拟用户登录)
import tkinter
import tkinter.messagebox
import os
import os.path
path=os.getenv('temp')
filename=os.path.join(path,'info.txt')
root=tkinter.Tk()
root['height']=140
root['width']=200
labelName=tkinter.Label(root,text='User Name:',anchor='e',justify=tkinter.RIGHT,width=80)
labelName.place(x=10,y=5,width=80,height=20)
varName=tkinter.StringVar(root,value='')
entryName=tkinter.Entry(root,width=80,textvariable=varName)
entryName.place(x=100,y=5,width=80,height=20)
labelPwd=tkinter.Label(root,text='User Pwd:',justify=tkinter.RIGHT,anchor='e',width=80)
labelPwd.place(x=10,y=30,width=80,height=20)
varPwd=tkinter.StringVar(root,value='')
entryPwd=tkinter.Entry(root,show='*',width=80,textvariable=varPwd)
entryPwd.place(x=100,y=30,width=80,height=20)
try:
with open(filename) as fp:
n,p=fp.read().strip().split(',')
varName.set(n)
varPwd.set(p)
except:
pass
rememberMe=tkinter.IntVar(root,value=1)
checkRemember=tkinter.Checkbutton(root,text='Remember me?',variable=rememberMe,onvalue=1,offvalue=0)
checkRemember.place(x=30,y=70,width=120,height=20)
def login():
name=entryName.get()
pwd=entryPwd.get()
if name=='admin' and pwd=='123456':
tkinter.messagebox.showinfo(title='恭喜',message='登录成功!')
if rememberMe.get()==1:
with open(filename,'w') as fp:
fp.write(',',''.join((name,pwd)))
else:
try:
os.remove(filename)
except:
pass
else:
tkinter.messagebox.showerror('警告',message='用户名或密码错误')
buttonOk=tkinter.Button(root,text='Login',command=login)
buttonOk.place(x=30,y=100,width=50,height=20)
def cancel():
varName.set('')
varPwd.set('')
buttonCancel=tkinter.Button(root,text='Cancel',command=cancel)
buttonCancel.place(x=90,y=100,width=50,height=20)
root.mainloop()
效果图如下:
实例2(选择类组件应用)
import tkinter
import tkinter.messagebox
import tkinter.ttk
root=tkinter.Tk()
root.title('Selection widgets')
root['height']=400
root['width']=320
varName=tkinter.StringVar()
varName.set('')
labelName=tkinter.Label(root,text='Name:',justify=tkinter.RIGHT,width