77.輸入框組件
1)簡單的entry組件實現(xiàn)簡單的輸入框
from tkinter import *
root=Tk()#一個根彈窗對象
e=Entry(root)
e.pack(padx=10,pady=10)
mainloop()
2)輸入框自帶默認輸入文本:利用entry組件對象的insert方法實現(xiàn)
from tkinter import *
root=Tk()#一個根彈窗對象
e=Entry(root)
e.pack(padx=10,pady=10)
e.insert(0,'hahaha...')
mainloop()
3)獲取輸入框內(nèi)容利用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函數(shù)布局作品和作者村生,及二者輸入框 及兩個底部按鈕對象
作者穿香、作品 兩個屬于label標簽,對應兩個輸入框是Entry對象、兩個按鈕屬于button對象
按鈕觸發(fā)需要提交并打印出兩個輸入框內(nèi)容与斤,這個利用按鈕的command實現(xiàn),讓其等于一個韓式湘今,這個韓數(shù)是show
show函數(shù)中利用Entry對象的get方法獲取輸入框輸入的內(nèi)容
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,當發(fā)生這個的是哦胡窟蓝,要調(diào)用validatecommand的函數(shù)進行校驗
3-4)校驗出輸入的異常后的繼續(xù)調(diào)用函數(shù)
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()