给tk.Entry增加输入自动检查功能

2019年11月14日 / 9次阅读 / Last Modified 2019年11月14日
tkinter

在python中用tkinter模块制作GUI界面,对于一般的输入,都会选择使用tk.Entry控件。对于输入检查,常见思路是:用户输入,点击确定,然后程序开始做检查。我们还有另外一个思路,即在tk.Entry控件中直接做输入检查,用户一边输入一边检查,用户输入完成,检查就做完!这种界面效果,个人认为更优雅。

tk.Entry控件的作用,就是承接用户的输入。用户输入,一定要通过键盘。因此,实现输入自动检查功能,我们可以让tk.Entry控件去响应按键的KeyRelease事件,用户每输入一个字符,都会产生一个KeyRelease事件,这时就可以在响应事件的函数中检查用户的输入,如果有错,进行相应的操作,比如背景颜色的改变作为提示,或者在log窗口提示,或者直接去掉这个错误的输入等等。

下面的python示例代码,实现了一个tk.Entry控件对输入的自动检查,只允许输入10个字符,一旦发现输入超长,自动将超长的部分删除:

import tkinter as tk

def _number_check(event):
    data = num.get().strip()
    if len(data) <= 10: return
    num.set(data[:10])

root = tk.Tk()
num = tk.StringVar()
numEntry = tk.Entry(root, textvariable=num)
numEntry.bind('<KeyRelease>', _number_check)
numEntry.pack()
root.mainloop()

tkinter控件通过bind函数绑定事件,对应的操作函数,比如要有1个输入参数,一般命令为event,这个event对象内含有很多可以利用的信息,不过本文示例没有使用。

这段代码可以直接运行,效果就是界面只有一个tk.Entry框,输入字符,一旦长度超过10,再输入时,你会看到你输入的超长字符,闪了一下就消失了!

tk.Entry通过这种方式实现输入自动检查,有个细节,即如果用户连续按着键盘的某个按键不放,也是有效的,每一个输入都会产生一个KeyRelease事件。您可以根据自己的需要,用这种方法,编写各种对输入的检查功能。python官方首推的GUI库tkinter,功能是很强大的。

-- EOF --

本文链接:https://www.pynote.net/archives/1499

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top