广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python使用Tkinter GUI实现输入验证功能
  • 620
分享到

Python使用Tkinter GUI实现输入验证功能

2024-04-02 19:04:59 620人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录输入验证1、Tkinter 验证简介1.1 validate命令1.2 validatecommand1.3 invalidcommand2、完整示例输入验证 在本文中,将介绍如

输入验证

在本文中,将介绍如何使用 Tkinter 验证来验证用户输入。

1、Tkinter 验证简介

Tkinter 验证依赖于可用于任何输入小部件(例如 Entry 小部件)的三个选项:

  • validate:指定哪种类型的事件将触发验证。
  • validatecommand:检查数据是否有效
  • invalidcommand:当数据无效时执行。 换句话说,如果 validate 命令返回 False,它将执行。

1.1 validate命令

validate 命令可以是以下字符串值之一:

名称描述
‘focus’验证小部件何时获得或失去焦点
‘focusin’每当小部件获得焦点时进行验证
‘focusout’验证小部件何时失去焦点
‘key’每当任何击键更改小部件的内容时进行验证
‘all’在上述所有情况下验证聚焦、聚焦和关键
‘none’关闭验证。 默认设置

1.2 validatecommand

validatecommand 是一个元组,包含:

  • 对 Tcl/tk 函数的引用。
  • 零个或多个替换代码指定触发要传递给函数的事件的信息。

要获取对 Tck/tk 函数的引用,请将可调用对象传递给 widget.reGISter() 方法。 它返回一个可以与 validate 命令一起使用的字符串。

下表显示了可用于元组的替换代码:

名称描述
%d'操作代码:0 表示尝试删除,1 表示尝试插入,或 -1 如果调用回调以聚焦、聚焦或更改“文本变量”
'%i'当用户试图插入或删除文本时,此参数将是插入或删除开始的索引。 如果回调是由于聚焦、聚焦或更改“textvariable”,则参数将为“-1”
'%P'如果允许更改,文本将具有的值
'%s'更改前Entry中的文本
'%S'如果调用是由于插入或删除,此参数将是被插入或删除的文本
'%v'小部件的 validate 选项的当前值
'%V'此回调的原因:如果 textvariable 被更改,则为 'focusin''focusout''key''forced' 之一
'%W'小部件的名称

以下示例构造一个使用 self.validate() 方法和 %P 替换代码的 validatecommand:

vcmd = (self.register(self.validate), '%P')

1.3 invalidcommand

与 validatecommand 一样,invalidcommand 也需要使用 widget.register() 方法和替换代码。

以下示例返回一个元组,您可以将其传递给 invalidcommand 选项:

ivcmd = (self.register(self.on_invalid),)

2、完整示例

下面将创建一个包含电子邮件输入的表单。 如果输入了无效的电子邮件地址,它将显示一条错误消息并将电子邮件输入的文本颜色更改为红色。 当焦点移出条目时,我们将触发验证事件。

import tkinter as tk
from tkinter import ttk
import re

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title('Tkinter Validation Demo')
        self.create_widgets()
    def create_widgets(self):
        self.columnconfigure(0, weight=1)
        self.columnconfigure(1, weight=3)
        self.columnconfigure(2, weight=1)
        # label
        ttk.Label(text='Email:').grid(row=0, column=0, padx=5, pady=5)
        # email entry
        vcmd = (self.register(self.validate), '%P')
        ivcmd = (self.register(self.on_invalid),)
        self.email_entry = ttk.Entry(self, width=50)
        self.email_entry.config(validate='focusout', validatecommand=vcmd, invalidcommand=ivcmd)
        self.email_entry.grid(row=0, column=1, columnspan=2, padx=5)
        self.label_error = ttk.Label(self, foreground='red')
        self.label_error.grid(row=1, column=1, sticky=tk.W, padx=5)
        # button
        self.send_button = ttk.Button(text='Send').grid(row=0, column=4, padx=5)
    def show_message(self, error='', color='black'):
        self.label_error['text'] = error
        self.email_entry['foreground'] = color
    def validate(self, value):
        """
        Validat the email entry
        :param value:
        :return:
        pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
        if re.fullmatch(pattern, value) is None:
            return False
        self.show_message()
        return True
    def on_invalid(self):
        Show the error message if the data is not valid
        self.show_message('Please enter a valid email', 'red')
if __name__ == '__main__':
    app = App()
    app.mainloop()

示例代码如何工作?

第一步,使用 self.validate() 方法和 %P 替换代码创建一个验证命令:

vcmd = (self.register(self.validate), '%P')

第二步,创建使用 self.on_invalid 方法的 invalidatecommand:

ivcmd = (self.register(self.on_invalid),)

第三步,配置使用validationvalidatecommandinvalidatecommand的Entry小部件:

self.email_entry.config(validate='focusout', validatecommand=vcmd, invalidcommand=ivcmd)

第四步,定义改变 label_error 小部件的文本和 email_entry 小部件的文本颜色的 show_message() 方法:

def show_message(self, error='', color='black'):
    self.label_error['text'] = error
    self.email_entry['foreground'] = color

第五步,定义验证 email_entry 值的 validate() 方法。

def validate(self, value):
    """
    Validat the email entry
    :param value:
    :return:
    """
    pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
    if re.fullmatch(pattern, value) is None:
        return False
    self.show_message()
    return True

如果输入文本有效,则 validate() 方法返回 True,否则返回 False。 如果输入文本是有效的电子邮件地址,请调用 show_message() 隐藏错误消息并将文本颜色设置为黑色。

如果输入文本不是有效的电子邮件地址,Tkinter 将执行 on_invalid() 方法。

最后,定义显示错误消息的 on_invalid() 方法并将 email_entry 小部件的文本颜色设置为红色。

def on_invalid(self):
    """
    Show the error message if the data is not valid
    :return:
    """
    self.show_message('Please enter a valid email', 'red')

到此这篇关于python使用Tkinter GUI实现输入验证的文章就介绍到这了,更多相关Python Tkinter GUI输入验证内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python使用Tkinter GUI实现输入验证功能

本文链接: https://www.lsjlt.com/news/117561.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python使用Tkinter GUI实现输入验证功能
    目录输入验证1、Tkinter 验证简介1.1 validate命令1.2 validatecommand1.3 invalidcommand2、完整示例输入验证 在本文中,将介绍如...
    99+
    2022-11-10
  • Python怎么使用Tkinter GUI实现输入验证功能
    本文小编为大家详细介绍“Python怎么使用Tkinter GUI实现输入验证功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么使用Tkinter GUI实现输入验证功能”文章能帮助大家解决疑惑,下面跟...
    99+
    2023-06-30
  • Angular如何使用输入框实现自定义验证功能
    这篇文章将为大家详细讲解有关Angular如何使用输入框实现自定义验证功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。此插件使用angular.js、JQuery实现。...
    99+
    2022-10-19
  • PHP表单验证函数实现用户输入数据的验证和处理功能
    PHP表单验证函数实现用户输入数据的验证和处理功能在Web开发中,用户输入数据的验证和处理是一个非常重要的环节。通过对用户输入进行验证,可以保证数据的合法性和安全性,有效地防止恶意输入和攻击。同时,对用户输入进行适当的处理可以确保数据的准确...
    99+
    2023-11-20
    PHP表单验证函数 用户输入数据 数据的验证和处理功能
  • php如何实现用户输入验证
    这篇文章主要介绍php如何实现用户输入验证,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!对于用户输入一串字符串$string,要求$string中只能包含大于0的数字和英文逗号,请用...
    99+
    2022-10-19
  • 使用request实现手工输入验证码登录
    我们的目标网站是这个http://awehome.com.cn,登录页面是这个http://awehome.com.cn/tenant/login import requests import json url = 'http://a...
    99+
    2023-01-30
    验证码 手工 request
  • Python中的行为验证码验证功能怎么实现
    本篇内容主要讲解“Python中的行为验证码验证功能怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的行为验证码验证功能怎么实现”吧!验证类型概述滑动拼图创新行为式验证,轻松...
    99+
    2023-07-05
  • SpringBoot使用Kaptcha实现验证码的生成与验证功能
    当我们在项目中登录使用验证码的时候,不妨试试Kaptcha生成验证码,非常简单 1、首先,我们在pom.xml文件中引入kaptcha的maven依赖 <!-- kaptcha...
    99+
    2023-03-13
    SpringBoot实现Kaptcha验证码 SpringBoot Kaptcha验证码 SpringBoot验证码
  • Django中使用pillow实现登录验证码功能(带刷新验证码功能)
    首先在项目里建立common目录,编写验证码的函数 verification_code.py import random from PIL import Image, Imag...
    99+
    2022-11-12
  • python使用tkinter模块实现文件选择功能
    目录前言1.导入库和模块2.编写按钮命令3. 窗体初始化及布局4.运行前言 学习Python中,总想做个图形界面,找来找去,找到了tkinter。 练习内容:图形界面中,点击按钮后,...
    99+
    2022-11-11
  • springbooot使用google验证码的功能实现
    目录springbooot使用google验证码1、使用场景2、springboot使用google验证码1、引入依赖2、编写配置类3、编写控制层4、前端实现springbooot使...
    99+
    2023-05-18
    springbooot google验证码 springbooot 验证码
  • 使用androidx BiometricPrompt实现指纹验证功能
    androidsdk版本大于29之后,使用FingerprintManagerCompat进行指纹验证显示被废弃,FingerprintManagerCompat的使用方法这里不再叙...
    99+
    2022-11-12
  • 如何使用FreeRadius +LDAP实现验证功能
    这篇文章将为大家详细讲解有关如何使用FreeRadius +LDAP实现验证功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。------ LDAP 的部份 ---------  首先,當然是要...
    99+
    2023-06-03
  • EditText如何实现输入限制和校验功能
    这篇文章主要介绍了EditText如何实现输入限制和校验功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、方法1)输入限制通过android:digits限制只能输入小写...
    99+
    2023-05-30
    edittext
  • PHP表单处理函数实现用户输入数据的验证和处理功能
    PHP是一种广泛应用于动态网页开发的脚本语言,它的优势在于简单易学、灵活性强。在网页开发中,我们经常需要通过表单来收集用户的输入数据,并进行相应的处理和验证。为了提高开发效率和减少代码重复,我们可以使用PHP表单处理函数来实现用户输入数据的...
    99+
    2023-11-20
    PHP 表单处理 函数实现
  • 如何使用Android实现常见的验证码输入框
    小编给大家分享一下如何使用Android实现常见的验证码输入框,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文先搂一眼效果吧不要把注意力都放在头顶的那一抹绿上,...
    99+
    2023-05-30
    android
  • 怎么使用vue实现表单验证功能
    这篇文章主要讲解了“怎么使用vue实现表单验证功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用vue实现表单验证功能”吧!具体代码如下:<!DOCTYPE html...
    99+
    2023-07-04
  • 如何使用JavaScript实现滑块验证功能
    这篇文章将为大家详细讲解有关如何使用JavaScript实现滑块验证功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下<!DOCTYPE html><html&nb...
    99+
    2023-06-26
  • SpringBoot如何使用Kaptcha实现验证码的生成与验证功能
    本篇内容主要讲解“SpringBoot如何使用Kaptcha实现验证码的生成与验证功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot如何使用Kaptcha实现验证码的生成与验...
    99+
    2023-07-05
  • python django 实现验证码的功能实例代码
    我也是刚学Python Django不久很多都不懂,所以我现在想一边学习一边记录下来然后大家一起讨论! 验证码功能一开始我在网上找了很多的demo但是我在模仿他们写的时候,发现在我的版本上根本就不能运行起...
    99+
    2022-06-04
    验证码 实例 代码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作