Tkinter条目小部件的验证

时间:2019-07-16 10:06:15

标签: python tkinter

我在tkinter GUI应用程序中有一个输入字段。条目应仅接受数字,包括小数点。我使用了一个函数来验证输入。问题是,如果前面没有数字,则不接受小数点(。)。 (示例25.3不会接受)。如果开头有一个点,则此后不接受任何数字。谁能帮助我解决这个问题。还有什么建议将输入字段中的最大值限制为1000?

import tkinter as tk

def acceptNumber(inp):
    if inp.isdigit():
        return True
    elif inp is "":
        return True
    elif inp is ".":
        return True
    else:
        return False
win = tk.Tk()
reg = win.register(acceptNumber)

entryHere =tk.Entry(win)
entryHere.place(x=400, y=200)

entryHere.config(validate="key", validatecommand =(reg, '%P'))
win.mainloop()

2 个答案:

答案 0 :(得分:1)

这接受不大于1000的有效十进制数字:

def acceptNumber(inp):
    try:
        return True if inp == '' else float(inp) <= 1000
    except:
        return False

答案 1 :(得分:0)

>>> s='1234'
>>> s.isdigit()
True
>>> sdot = '1234.'
>>> sdot.isdigit()
False

这不是您的问题吗? isdigit()仅表示数字。