2019年11月14日 / 1,735次阅读 / 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
©Copyright 麦新杰 Since 2019 Python笔记