1. 程式人生 > >小白學tkinter(Entry元件)

小白學tkinter(Entry元件)

# Entry用來輸入單行文字  
'''''1.第一個Entry程式'''  
from tkinter import *  

root = Tk()  
# 建立entry  
Entry(root, text='input your text here').pack()  
# 上面的程式碼目的是建立一個Entry物件,並在Entry上顯示'input your text here',執行此程式碼,並沒有看到文字的顯示,  
# 由此可知與Lable和Button不同,Entry的text屬性不可以設定Entry的文字  

'''''2.在Entry中設定初始值,使用textvariable將變數與Entry繫結'''
e = StringVar() entry = Entry(root, textvariable=e).pack() e.set('input your text here') '''''3.設定為只讀Entry. Entry的另一個比較有用的屬性,設定為只讀,不允許使用者對它的值改變。 設定state屬性為'readonly' ''' e2 = StringVar() entry = Entry(root, textvariable=e2) #上邊這句可以改為 entry = Entry(root,textvariable = e2,state = 'readonly')
e2.set('not modify') entry.pack() entry['state'] = 'readonly' #用這個方法設定屬性太笨笨了,看上邊可以更加便捷 # 實際上Entry的屬性值可以使用的也為#normal/active/disabled,'readonly'與disabled一樣 root.mainloop() '''''4.設定為密碼輸入框 #將Entry作為一個密碼輸入框來使用,即不顯示使用者輸入的內容值,用特定符號代替。使用用屬性 show來指定。 ''' from tkinter import * root = Tk() e = StringVar() entry = Entry(root, textvariable=e) e.set('input your text here'
) entry.pack() # 使用*來顯示輸入的內容,如果喜歡可以改為其它字元 entry['show'] = '*' # 分別使用*#$顯示輸入的文字內容 for mask in ['*', '#', '$']: e = StringVar() entry = Entry(root, textvariable=e) e.set('password') entry.pack() entry['show'] = mask root.mainloop() '''''5.驗證輸入的內容是否符合要求。 Entry 元件是支援驗證輸入內容的合法性的,比如要求輸入數字,你輸入了字母那就是非法。 實現該功能,需要通過設定 validate、validatecommand 和 invalidcommand 選項。 一、啟用驗證的“開關”是 validate 選項,該選項可以設定的值有: focus:當 Entry 元件獲得或失去焦點的時候驗證 focusin: 當 Entry 元件獲得焦點的時候驗證 focusout: 當 Entry 元件失去焦點的時候驗證 key:當輸入框被編輯的時候驗證 all: 當出現上邊任何一種情況的時候驗證 二、是為 validatecommand 選項指定一個驗證函式,該函式只能返回 True 或 False 表示驗證的結果。 一般情況下驗證函式只需要知道輸入框的內容即可,可以通過 Entry 元件的 get() 方法獲得該字串。 三、invalidcommand 選項指定的函式只有在 validatecommand 的返回值為 False 的時候才被呼叫。 ''' from tkinter import * root = Tk() def test(): if e1.get() == '小甲魚': print('正確') return True else: print('錯誤') e1.delete(0,END) return False def test2(): print('invalidcommand被呼叫了') return True v = StringVar() e1 = Entry(root,textvariable = v,validate = 'focusout',\ validatecommand = test,invalidcommand = test2) e2 = Entry(root) e1.pack() e2.pack() mainloop() # 還有其他的屬性fg/bg/relief/width/height/justify/state使用方法與Button相同,不再舉例。 [Python學習記錄--關於Tkinter Entry(文字框)的選項、方法說明,以及一些示例。](http://www.cnblogs.com/onlyfu/archive/2013/03/07/2947473.html) ----------------------------------------------------- '''小甲魚的例子''' from tkinter import * root = Tk() Label(root,text = '賬號:').grid(row = 0) Label(root,text = '密碼:').grid(row = 1) v1 = StringVar() v2 = StringVar() #將變數,通常是StringVar繫結到textvariable上 e1 = Entry(root,textvariable = v1) #將Entry作為一個密碼輸入框來使用,即不顯示使用者輸入的內容值,用特定符號(這個符號可以用任意符號)代替。使用用屬性show來指定,。 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(e1.get()) print(e2.get()) e1.delete(0,END) e2.delete(0,END) Button(root,text = '提交',width = 10,command = show)\ .grid(row = 3,column = 0,sticky = W,padx = 10,pady = 5)#sticky選項控制網格管理器中元件的位置 Button(root,text = '退出',width = 10,command = root.quit)\ .grid(row = 3,column = 1,sticky = E,padx = 10,pady = 5) root.mainloop()