在Tkinter的输入字段中仅允许输入范围

时间:2020-04-01 20:49:36

标签: python python-3.x tkinter

我需要实现一个仅接受DoubleVar值范围的输入框。我已经参考了问过How to only allow certain parameters within an entry field on Tkinter的问题,但是我希望在用户输入值时通知用户(使用字体颜色或其他更改)。我已经阅读了文档,但这是我没有遇到过的。 我是Tkinter的新手,如果这听起来很愚蠢,请原谅

2 个答案:

答案 0 :(得分:1)

您可以将KeyRelease的{​​{1}}事件绑定到回调并检查输入值是否有效并且在所需范围内,然后相应地更新Entry的前景色:

Entry

答案 1 :(得分:0)

validatecommand使用Entry选项。

一些代码片段显示其工作原理:

root = tk.Tk()

vcmd = root.register(is_number)

e = ttk.Entry(pressf, justify='right', validate='key', validatecommand=(vcmd, '%P'))

def is_number(data):
    """Validate the contents of an entry widget as a float."""
    if data == '':
        return True
    try:
        rv = float(data)
        if rv < 0:
            return False
    except ValueError:
        return False
    return True

这基本上在每次按键时调用验证功能。仅当验证成功后,字符才会添加到条目中。

您可以找到完整的工作示例here

修改

上面是验证器的“规范”示例。它允许或禁止字符进入Entry

但是您也可以通过其他方式使用它。 例如,您始终可以返回True,但例如如果该值不在所需的范围内,请将Entry的文本颜色更改为红色。