首页 > 解决方案 > tkinter 条目小部件的验证

问题描述

我的 tkinter GUI 应用程序中有一个输入字段。entry 应该只接受包括小数点在内的数字。我使用了一个函数来验证条目。问题是,如果前面有数字,它不接受小数点 (.)。(示例 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()

标签: pythontkinter

解决方案


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

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

推荐阅读