Python提供了多种与GUI应用程序一起使用的框架。TkinterTk或Tk接口是用于构建基于GUI的应用程序的最广泛使用的Python接口之一。有些应用程序要求验证文本字段, 以防止在提交表单之前来自用户的无效输入。 Python通过允许使用回调函数进行变量跟踪来允许输入验证。每当将输入添加到条目小部件或从条目小部件中删除输入时, 就会调用此函数。某些应用程序验证表单提交时的输入, 但是下面的代码对键盘上的每个按键进行验证。
导入tkinter模块
import tkinter
导入tkinter子模块
from tkinter import *
定义”回调”功能
def callback(input):
if input.isdigit():
print(input)
return True
elif input is "":
print(input)
return True
else:
print(input)
return False
解释
回调函数检查Entry小部件中的输入是否有效。如果该条目有效, 则返回True或False。在此示例中, 将检查通过键盘输入的输入是否为数字类型。如果输入为数字类型, 则回调函数返回true。对于删除操作, 回调函数在输入为””时返回true。但是, 对于任何非数字输入, 回调函数将返回false。
创建父窗口
root=Tk()
语法如下:
Tk(screenName = None, baseName = None, className =” Tk”, useTk = 1)
参数:
在这个例子中, Tk类被实例化而没有参数。
解释
此方法创建一个父窗口小部件, 该窗口小部件通常是应用程序的主窗口。
创建条目小部件
e=Entry(root)
语法如下:
条目(主选项, **选项)
参数:
- 主:表示父窗口(此处为root)。
- 选项:支持的选项包括bg, bd, 命令, 光标, 字体, exportselection, justify, relief, highlightcolor, fg, selectbackground, selectforeground, selectborderwidth, show, xscrollcommand, state, textvariable和width。
返回值:
返回一个字符串(。!entry)。
解释
此方法用于在父窗口小部件(根)上创建Entry小部件。
在父窗口中指定Entry小部件的位置
e.place(x=50, y=50)
语法如下:
地方(x, y)
参数:
- x:Entry小部件相对于父小部件沿X轴的位置。
- y:Entry小部件相对于父小部件沿Y轴的位置。
说明:
此方法指定Entry小部件在父窗口(根)中的位置。
注册回调函数
reg=root.register(callback)
语法如下:
register(函数)
参数:
- 功能:用来验证Entry小部件中输入的函数。
返回值:
此方法返回可用于调用函数的字符串。
解释
register()方法返回一个字符串, 该字符串已分配给变量” reg”, 该变量将在以后的阶段中用于调用回调函数。
调用回调函数以验证Entry小部件中的输入
e.config(validate="key", validatecommand=(reg, '%P'))
语法如下:
config(validate =” key”, validatecommand =(reg, ‘%P’))
参数:
- 验证:此选项用于指定何时调用回调函数以验证输入。 “键”值指定每当击键(来自键盘的输入)更改小部件的内容时, 都会进行验证。
- validate命令:此选项用于指定回调函数。没有直接调用该函数, 而是传递了一个在先前步骤中注册的变量。如果允许更改, 则传递”%P”以表示文本将具有的值。
解释
验证选项支持其他值, 例如focus, focusin, focusout, all和none。默认值为” none”, 这意味着不进行验证。
Validatecommand选项支持其他值, 例如%d, %i, %s, %S, %v, %V和%W。可以为要传递给Python函数的每个参数添加替换百分比
Entry小部件还支持一个invalidcommand选项, 该选项将在validatevalid命令返回False时调用一个函数。
这些可以根据用户的要求使用。
运行应用程序
root.mainloop()
语法:mainloop()
解释
只要不关闭窗口, mainloop()是一个无限循环, 用于运行应用程序。
用于验证Entry小部件的完整代码
import tkinter
from tkinter import *
def callback( input ):
if input .isdigit():
print ( input )
return True
elif input is "":
print ( input )
return True
else :
print ( input )
return False
root = Tk()
e = Entry(root)
e.place(x = 50 , y = 50 )
reg = root.register(callback)
e.config(validate = "key" , validatecommand = (reg, '% P' ))
root.mainloop()
输出如下:
(建议使用全屏视图)
解释
当我们使用键盘输入数字时, 回调函数将返回true, 并且在输入小部件中允许该值。但是, 从键盘输入字母时, 回调函数将返回false, 并且不允许在输入小部件中输入该值。为了更清楚地了解回调函数的工作原理, 将通过键盘发送的输入打印在控制台上。可以看出, 任何非数字输入都会在控制台上打印出来, 但在条目小部件中是不允许的。输入小部件中也允许插入和删除数字。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
评论前必须登录!
注册