tkinter -- Entry

时间:2022-06-05
本文章向大家介绍tkinter -- Entry,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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 相同,不再举例