Entry 用来输入单行文本
示例:
import tkinter as tk
root = tk.Tk()
tk.Entry(root, text='input >>>').pack()
root.mainloop()
效果:
上面的代码目的是创建一个Entry对象,并在Entry上显示'input >>>',运行此代码,并没有看到文本的显示,由此可知于Lable和Button不同,Entry的text属性不可以设置Entry的文本
在Entry中设定初始值,使用textvariable将变量与Entry绑定
示例:
import tkinter as tk
root = tk.Tk()
st = tk.StringVar()
entry = tk.Entry(root, textvariable=st)
st.set('www.py3study.com')
entry.pack()
root.mainloop()
效果:
上面的例子中将变量st与Entry绑定,然后将st的值设置为'www.py3study.com',程序运行时的初始值便设置了
设置为只读Entry,不能更改
Entry的另一个比较有用的属性,设置为只读,不允许用户对它的值改变.
设置state属性为'readonly'
示例:
import tkinter as tk
root = tk.Tk()
st = tk.StringVar()
entry = tk.Entry(root, textvariable=st)
st.set('www.py3study.com')
entry.pack()
entry['state'] = 'readonly'
root.mainloop()
效果:
实际上Entry的属性值可以使用的也为normal/readonly/disabled,
normal 正常
readonly 只读
disabled 禁用
代码:
import tkinter as tk
root = tk.Tk()
st = tk.StringVar()
entry1 = tk.Entry(root, textvariable=st)
entry2 = tk.Entry(root, textvariable=st)
entry3 = tk.Entry(root, textvariable=st)
st.set('www.py3study.com')
entry1['state'] = 'normal'
entry2['state'] = 'readonly'
entry3['state'] = 'disabled'
entry1.pack()
entry2.pack()
entry3.pack()
root.mainloop()
效果:
设置为密码输入框
将Entry作为一个密码输入框来使用,即不显示用户输入的内容值,用特定符号来代替,使用属性show来指定
示例:
import tkinter as tk
root = tk.Tk()
st = tk.StringVar()
entry = tk.Entry(root, textvariable=st)
st.set('请输入密码')
entry.pack()
# 使用*来显示输入的内容,如果喜欢可以改为其它字符
entry['show'] = '*'
# 分别使用*#$显示输入的文本内容
for i in ['*', '#', '$']:
e = tk.StringVar()
entry = tk.Entry(root, textvariable=e)
e.set('password')
entry.pack()
entry['show'] = i
root.mainloop()
效果:
验证输入的内容是否符合要求
使用validate来校验输入的内容
示例:
import tkinter as tk
def text(content):
# 光标失去时,这个函数就会执行
if content == 'password':
print('正确')
print(content)
return True
else:
print('错误')
print(content)
return False
def main():
root = tk.Tk()
st = tk.StringVar()
# 需要用root.register将函数包装一下,必要的
test_cmd = root.register(text)
# %P表示 当输入框的值允许改变,该值有效,该值为当前文本框内容
entry = tk.Entry(root, textvariable=st, validate='focusout', validatecommand=(test_cmd, '%P'))
entry.pack()
root.mainloop()
if __name__ == '__main__':
main()
效果:
还有其他的属性 fg/bg/relief/width/height/justify/state 使用方法与 Button 相同,不再举例