这是我的代码:
root = Tk()
def mytest():
var = entry.get()
print(var)
return True
entry = Entry(root, validate="key", validatecommand=mytest)
entry.pack()
root.mainloop()
我试图验证用户输入的每个字母。
问题是当我使用 get()
方法获取当前字母时,我得到的字母最多为上一个输入。
例如,假设我正在输入单词 "abc"
- 当我第一次输入
"a"
时,它不会打印任何内容。 - 当我添加
"b"
时,它会打印"a"
- 当我继续输入
"c"
时,它会打印"ab"
为什么会出现这种奇怪的行为?
最佳答案
它并没有得到所有的东西,因为这正是 validatecommand 的工作方式——它在插入文本之前调用一个函数,让您有机会在字符无效时否决插入.
您可以让 Tkinter 传递更改前的值、接受更改后的值、插入的文本以及其他一些有助于您进行验证的内容。例如,请参阅此答案:https://stackoverflow.com/a/4140988/7432
关于python - 验证函数打印以前的输入而不是当前的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16052688/