Python Tkinter–验证条目小部件

Python提供了多种与GUI应用程序一起使用的框架。TkinterTk或Tk接口是用于构建基于GUI的应用程序的最广泛使用的Python接口之一。有些应用程序要求验证文本字段, 以防止在提交表单之前来自用户的无效输入。 Python通过允许使用回调函数进行变量跟踪来允许输入验证。每当将输入添加到条目小部件或从条目小部件中删除输入时, 就会调用此函数。某些应用程序验证表单提交时的输入, 但是下面的代码对键盘上的每个按键进行验证。
【Python Tkinter–验证条目小部件】导入tkinter模块

import tkinter

导入tkinter子模块
from tkinter import *

定义” 回调” 功能
def callback(input): if input.isdigit(): print(input) return Trueelif input is "": print(input) return Trueelse: 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 Trueelif input is "": print ( input ) return Trueelse : print ( input ) return Falseroot = 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课程。

    推荐阅读