56-tkinter-ttkbootstrap-validation验证模块

validation验证模块

此模块包含用于添加的类和函数 验证条目、旋转框和组合框小部件。几个帮手 包括以“add”前缀开头的方法。

使用预定义的方法

将验证应用于微件并确定输入时 要无效,则会对微件应用“危险”彩色边框。 当小组件被确定为有效时,此边框将消失 内容。

下面是一些使用预定义验证的示例。浏览 以下文档中的完整列表:

app = ttk.Window()

entry = ttk.Entry()
entry.pack(padx=10, pady=10)

# check if contents is text
add_text_validation(entry)

# prevent any entry except text
add_text_validation(entry, when='key')

# check for a specific list of options
add_option_validation(entry, ['red', 'blue', 'green'])

# validate against a specific regex expression
add_regex_validation(entry, r'\d{4}-\d{2}-\d{2}')    

添加自定义验证

首先,创建自定义验证函数。这必须接受一个对象,并应返回一个布尔值。你应该 还可以使用 @validator 修饰器将此方法转换为 验证方法。检查属性以 了解此事件中返回的内容。ValidationEvent``ValidationEvent

from ttkbootstrap import validator, add_validation

@validator
def validate_long_text(event):
    if len(event.postchangetext) > 20:
        return True
    else:
        return False

将自定义验证应用于微件

add_validation(entry, validate_long_text)

验证用户输入

任何基于 Entry 的小部件都可以验证用户输入。 当小部件处于 invalid 状态时,边框颜色将变为 danger 颜色。

entry-validation

在此示例中,验证类型为focus,这意味着每次小部件接收或失去焦点时都会运行验证函数。

还有几种其他类型的验证,以及许多配置验证的方法。

未来的教程将对此进行更详细的讨论,但与此同时,您可以查阅 tcl/tk 文档 了解更多关于什么可用于验证的信息。

import ttkbootstrap as ttk
from ttkbootstrap.constants import *


def validate_number(x) -> bool:
    """Validates that the input is a number"""
    if x.isdigit():
        return True
    elif x == "":
        return True
    else:
        return False


def validate_alpha(x) -> bool:
    """Validates that the input is alpha"""
    if x.isdigit():
        return False
    elif x == "":
        return True
    else:
        return True


# create the toplevel window
root = ttk.Window()
frame = ttk.Frame(root, padding=10)
frame.pack(fill=BOTH, expand=YES)

# register the validation callback
digit_func = root.register(validate_number)
alpha_func = root.register(validate_alpha)

# validate numeric entry
ttk.Label(frame, text="Enter a number").pack()
num_entry = ttk.Entry(frame, validate="focus", validatecommand=(digit_func, '%P'))
num_entry.pack(padx=10, pady=10, expand=True)

# validate alpha entry
ttk.Label(frame, text="Enter a letter").pack()
let_entry = ttk.Entry(frame, validate="focus", validatecommand=(alpha_func, '%P'))
let_entry.pack(padx=10, pady=10, expand=True)

root.mainloop()

ValidationEvent

包含由 在 tkinter 小部件上返回的验证事件的属性。validatecommand

属性:

名字类型描述
actioncodestr0 表示尝试删除,1 表示尝试插入, 如果回调用于焦点、焦点输出或 更改为文本变量。
insertdeletetextstr当用户尝试插入或删除文本时,此 属性将是 插入或删除。如果回调是由于焦点, 聚焦,或对文本变量(属性)的更改 将为 -1。
postchangetextstr允许更改时文本将具有的值。
prechangetextstr更改前条目中的文本。
insertdeletetextstr插入或删除的文本(如果呼叫是由于 插入或删除。
validationtypestr指定小组件的验证选项,该选项指定何时进行验证。
widgetWidget正在验证的小组件对象。

add_numeric_validation(widget, when='focusout')

检查小部件内容是否为数字。将状态设置为“无效” 如果不是数字。

参数:

名字类型描述违约
widgetWidget要在其上添加验证的小组件。必填
whenstr指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation'focusout'

add_option_validation(widget, options, when='focusout')

检查小部件内容是否在选项列表中。

参数:

名字类型描述违约
widgetWidget要在其上添加验证的小组件。必填
whenstr指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation'focusout'

add_phonenumber_validation(widget, when='focusout')

检查小组件内容是否与电话号码模式匹配。

参数:

名字类型描述违约
widgetWidget要在其上添加验证的小组件。必填
whenstr指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation'focusout'

add_range_validation(widget, startrange, endrange, when='focusout')

检查小部件内容是否在数字范围内(包括数字)。 如果数字超出范围,则将状态设置为“无效”。

参数:

名字类型描述违约
widgetWidget要在其上添加验证的小组件。必填
whenstr指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation'focusout'

add_regex_validation(widget, pattern, when='focusout')

检查小部件内容是否与常规表达式匹配。设置的 如果未找到匹配项,则状态为“无效”。

参数:

名字类型描述违约
widgetWidget要在其上添加验证的小组件。必填
whenstr指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation'focusout'

add_text_validation(widget, when='focusout')

检查小部件内容是否为 alpha。将状态设置为“无效” 如果不是文本。

参数:

名字类型描述违约
widgetWidget要在其上添加验证的小组件。必填
whenstr指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation'focusout'

add_validation(widget, func, when='focusout', **kwargs)

将验证添加到 、 或 类型的小部件中。func 应接受类型的参数,并应返回布尔值。Entry``Combobox``Spinbox``ValidationEvent

参数:

名字类型描述违约
widgetWidget将应用验证的小组件。必填
funcCallable验证事件时将调用的函数 发生。必填
whenstr指示何时应发生验证事件。可能 值包括:焦点 - 每当小部件获得或失去焦点时焦点 - 每当小部件获得焦点时聚焦 - 每当小部件失去焦点时键 - 每当按下某个键时all - 在上述所有情况下验证'focusout'
kwargsDict传递给回调的可选参数。{}

validator(func)

修饰标准函数,使其接收验证 tkinter 小部件上的验证命令返回的事件。

参数:

名字类型描述违约
funcCallable要修饰的验证函数。必填
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值