最终,我想用文本框制作一个小程序,您必须在其中输入Pi的前50个左右数字。如果用户键入正确的字符,我想要的是什么都不会发生,但是如果用户输入错误的字符,我希望某些东西闪烁红色。例如,如果用户键入“ 3.1”,则仅显示在文本框中的文本什么都不会发生,但是如果他们键入错误的数字(如“ 3.15”),我希望某些内容闪烁红色。
from tkinter import *
def input(event):
inp = (ent.get('1.0', END))
if inp == '3':
print(inp)
else:
print(('--') + (inp))
root = Tk()
root.title('pi, okay')
root.geometry('425x50')
ent = Text(root, width = 50, height = 1)
ent.bind('<KeyRelease>', input)
ent.pack()
mainloop()
我认为应该发生的情况是,如果用户输入“ 3”,则控制台将打印“ 3”;如果是,则控制台将显示“-(无论用户键入什么)”。不是3。但是实际上发生的是该程序无论如何都将打印“-(输入)”。
答案 0 :(得分:0)
如果只需要一行输入,则可以使用类似这样的东西:
var = StringVar()
ent = Entry(root, width=50, textvariable=var)
def check_value(var, ent, *args):
pi = "3.1415"
if not pi.startswith(var.get()):
print("wrong input")
ent.config(fg="red")
else:
ent.config(fg="black")
var.trace('w', lambda *args: check_value(var, ent, *args))
ent.pack()
在这里,每次用户在Entry小部件中键入任何内容时,var.trace()
都会调用函数check_value
。您可以在此处添加逻辑以验证输入值,并根据验证结果更改UI(或打印日志)。