如何在Tkinter中验证输入字段

时间:2019-04-20 21:49:19

标签: python python-3.x tkinter

我只需要数字并在数字上签名。被打印在我的输入字段中。但是在运行此代码后,我只能输入数字或只能输入符号“。”(我尝试输入“ 2.45”,但是要点不是在“ 2”之后输入。如果我尝试输入“ .45”,则不会输入“ 45”在“。”之后键入)。我该如何解决这个问题?

from tkinter import *

root = Tk()
entry = Entry(width=10)
entry.pack()

def correct(inp):
    if inp.isdigit():
        return True
    elif inp == ".":
        return True
    elif inp == "":
        return True
    else:
        return False

reg = root.register(correct)

entry.config(validate='key', validatecommand = (reg, '%P'))

root.mainloop()

1 个答案:

答案 0 :(得分:0)

您的验证功能没有写错……我认为这将是一种更轻松的方法来完成您想要的事情:

import tkinter as tk

root = tk.Tk()
entry = tk.Entry(width=10)
entry.pack()

def correct(inp):
    """ Determine if inp value is a valid floating point number. """
    try:
        float(inp)
    except ValueError:
        return inp == ''  # Consider empty string valid.
    else:
        return True

reg = root.register(correct)

entry.config(validate='key', validatecommand=(reg, '%P'))

root.mainloop()