3

这是我的代码:

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"

为什么会出现这种奇怪的行为?

4

1 回答 1

3

它并没有得到所有东西,因为这正是 validatecommand 的工作方式——它在插入文本之前调用一个函数,如果字符无效,则让您有机会否决插入。

您可以让 Tkinter 传入更改前的值、接受更改时的值、插入的文本以及其他一些帮助您进行验证的东西。例如,请参阅此答案:https ://stackoverflow.com/a/4140988/7432

于 2013-04-17T11:02:10.937 回答