tkinter的Entry设置为不可编辑状态
前
首先我们知道,tkinter中有许许多多的控件,其中使用频繁的控件之一就是Entry(输入框),那么怎么设置它为不可编辑状态呢?
state选项
一般我们在写Entry的时候只传入了一个master参数,也就是这样,
from tkinter import *
root = Tk()
root.geometry('200x200')
lf = LabelFrame(root, text='默认状态')
lf.place(relx=0.1, rely=0.25, relwidth=0.8, relheight=0.5)
ent1 = Entry(lf)
ent1.place(relx=0.1, rely=0.25, relwidth=0.8)
root.mainloop()
效果是这样的:
实际上Entry有一个参数叫state
,它的值有normal
, disable
, readonly
其实看到这里我们就能大概知道各个状态了。
让我们逐一试试:
normal:
from tkinter import *
root = Tk()
root.geometry('200x200')
lf = LabelFrame(root, text='normal状态')
lf.place(relx=0.1, rely=0.25, relwidth=0.8, relheight=0.5)
ent1 = Entry(lf, state='normal')
ent1.place(relx=0.1, rely=0.25, relwidth=0.8)
root.mainloop()
normal效果:
disable:
这里为了演示效果,我们在Entry中插入一个值,看是否能显示
from tkinter import *
root = Tk()
root.geometry('200x200')
lf = LabelFrame(root, text='disable状态')
lf.place(relx=0.1, rely=0.25, relwidth=0.8, relheight=0.5)
ent1 = Entry(lf, state='disable')
ent1.insert(END, 'adada')
ent1.place(relx=0.1, rely=0.25, relwidth=0.8)
root.mainloop()
disable效果:
readonly:
为了演示效果,也是提前插入一个值。
但是readonly是可读,如果我们在初始化时就设置可读,那么之后Entry的内容就无法再编辑
from tkinter import *
root = Tk()
root.geometry('200x200')
lf = LabelFrame(root, text='readonly状态,初始化设置')
lf.place(relx=0.1, rely=0.25, relwidth=0.8, relheight=0.5)
ent1 = Entry(lf, state='readonly')
ent1.insert(END, 'adad')
ent1.place(relx=0.1, rely=0.25, relwidth=0.8)
root.mainloop()
readonly1效果:
我们可以在处理过Entry的文本后,利用config函数,再将其state设置为readonly,这样更加常用。
from tkinter import *
root = Tk()
root.geometry('200x200')
lf = LabelFrame(root, text='readonly状态,之后设置')
lf.place(relx=0.1, rely=0.25, relwidth=0.8, relheight=0.5)
ent1 = Entry(lf)
ent1.insert(END, 'adad')
ent1.config(state='readonly')
ent1.place(relx=0.1, rely=0.25, relwidth=0.8)
root.mainloop()
readonly2效果:
道生一,一生二,二生三,三生万物。