python - 验证函数打印以前的输入而不是当前的

标签 python python-3.x validation tkinter tkinter-entry

这是我的代码:

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/

相关文章:

php - 如何禁用 symfony 2.3 中特定按钮的 html5 验证

c - 在 Raspberry Pi 上安装 Python 3 标准库

java - spring boot 中的自定义 jpa 验证

python - .remove 不删除给定的字符串

python - 为什么在 Python 中 1 == True 但 2 != True?

python 将调试日志记录到标准输出中

python - 如何将八进制字符串更改为char?

javascript - 单选按钮验证(动态名称)

python - mysqldb更新报错typeerror 'str' object is not callable

python - 为什么 doctests 在使用 Sphinx 的 `make doctest` 运行时会引发 NameError ?