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