77.输入框组件
1)简单的entry组件实现简单的输入框
from tkinter import *
root=Tk()#一个根弹窗对象
e=Entry(root)
e.pack(padx=10,pady=10)
mainloop()
2)输入框自带默认输入文本:利用entry组件对象的insert方法实现
from tkinter import *
root=Tk()#一个根弹窗对象
e=Entry(root)
e.pack(padx=10,pady=10)
e.insert(0,'hahaha...')
mainloop()
3)获取输入框内容利用entry组件对象的get方法
3-1)作品和作者的输入和输出
from tkinter import *
root=Tk()#一个根弹窗对象
Label(root,text='作品:').grid(row=0,column=0)
Label(root,text='作者:').grid(row=1,column=0)
e1=Entry(root)
e2=Entry(root)
e1.grid(row=0,column=1,padx=10,pady=5)
e2.grid(row=1,column=1,padx=10,pady=5)
def show():
print('作品:<%s>'% e1.get())
print('作者:<%s>'% e2.get())
Button(root,text='获取信息',width=10,command=show).grid(row=3,column=0,sticky=W)
Button(root,text='退出',width=10,command=root.quit).grid(row=3,column=1,sticky=E)
mainloop()
解析如下:
定义一个根弹窗对象root=Tk()
利用grid函数布局作品和作者,及二者输入框 及两个底部按钮对象
作者、作品 两个属于label标签,对应两个输入框是Entry对象、两个按钮属于button对象
按钮触发需要提交并打印出两个输入框内容,这个利用按钮的command实现,让其等于一个韩式,这个韩数是show
show函数中利用Entry对象的get方法获取输入框输入的内容
3-2)密码输入框:利用星号替代
from tkinter import *
root=Tk()#一个根弹窗对象
Label(root,text='账号:').grid(row=0,column=0)
Label(root,text='密码:').grid(row=1,column=0)
v1=StringVar()
v2=StringVar()
e1=Entry(root,textvariable=v1)
e2=Entry(root,textvariable=v2,show='*')
e1.grid(row=0,column=1,padx=10,pady=5)
e2.grid(row=1,column=1,padx=10,pady=5)
def show():
print('账号:<%s>'% e1.get())
print('密码:<%s>'% e2.get())
Button(root,text='芝麻开门',width=10,command=show).grid(row=3,column=0,sticky=W)
Button(root,text='退出',width=10,command=root.quit).grid(row=3,column=1,sticky=E)
mainloop()
3-3)输入框校验
from tkinter import *
root=Tk()
def test():
if e1.get()=='yangfei':
print('goog')
return True
else:
print('wrong')
e1.delete(0,END)
return False
v=StringVar()
e1=Entry(root,textvariable=v,validate='focusout',validatecommand=test)
e2=Entry(root)
e1.pack(padx=10,pady=10)
e2.pack(padx=10,pady=10)
mainloop()
解析:利用validate定义检测动作是较短移出,focusout,当发生这个的是哦胡,要调用validatecommand的函数进行校验
3-4)校验出输入的异常后的继续调用函数
from tkinter import *
root=Tk()
def test():
if e1.get()=='yangfei':
print('goog')
return True
else:
print('wrong')
e1.delete(0,END)
return False
def test2():
print('haha')
return True
v=StringVar()
e1=Entry(root,textvariable=v,validate='focusout',validatecommand=test,invalidcommand=test2)
e2=Entry(root)
e1.pack(padx=10,pady=10)
e2.pack(padx=10,pady=10)
mainloop()
3-5)计算器
from tkinter import *
root=Tk()
frame=Frame(root)
frame.pack(padx=10,pady=10)
v1=StringVar()
v2=StringVar()
v3=StringVar()
def test(content):
return content.isdigit()
testCMD=root.register(test)
e1=Entry(frame,width=10,textvariable=v1,validate='key',validatecommand=(testCMD,'%p')).grid(rpw=0,column=0)
Label(frame,text='+').grid(row=0,column=1)
e2=Entry(frame,width=10,textvariable=v2,validate='key',validatecommand=(testCMD,'%p')).grid(rpw=0,column=2)
Label(frame,text='=').grid(row=0,column=3)
e3=Entry(frame,width=10,textvariable=v3,state='readonly').grid(row=0,column=4)
def calc():
result=int(e1.get())+int(e2.get())
v3.set(str(result))
Button(frame,text='jieguo',command=calc).grid(row=1,column=2,pady=5)
mainloop()