小白學tkinter(Entry元件)
阿新 • • 發佈:2018-12-31
# 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()