验证Tkinter条目只运行一次

时间:2018-03-04 20:33:41

标签: python tkinter tkinter-entry

我正在尝试实现一种只接受输入整数的条目,但是我很难让代码按照需要运行。据我所知:

  • 条目小部件有一个参数validate,可以选择何时进行验证。
  • 参数validatecommand决定数据的限制方式
  • 当验证等于' key'时,在每次击键时,根据validatecommand
  • 中指定的规则检查条目中的字符串

然而,在尝试这个之后,我遇到的问题是它只在前面的条目中验证字符串,甚至点击它。

from tkinter import*
root = Tk()

def equationpage(root):
    vcmd = root.register(validate)
    A_str = IntVar()
    A_str.set(1)
    a = Entry(root,width="2",textvariable=A_str,validate = "key",validatecommand = (vcmd,'%p'))
    a.place(x=0,y=0)
def validate(inp):
    try:
        float(inp)
    except:
        return False
    return True
equationpage(root)
mainloop()

使用上面的代码不会进行验证,它允许我在条目中输入任何内容。如果我更改上面的代码,以便条目没有默认值,我最终无法在条目中输入任何内容,因为它一直拒绝输入。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

基于this answer,此选项没有定义的Tcl变量:'%p'

替换:

'%p'

包含大写 P

'%P'