个性化阅读
专注于IT技术分析

Python Tkinter–验证条目小部件

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课程。


赞(0) 打赏
未经允许不得转载:srcmini » Python Tkinter–验证条目小部件
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏