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 颜色。
在此示例中,验证类型为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
属性:
名字 | 类型 | 描述 |
---|---|---|
actioncode | str | 0 表示尝试删除,1 表示尝试插入, 如果回调用于焦点、焦点输出或 更改为文本变量。 |
insertdeletetext | str | 当用户尝试插入或删除文本时,此 属性将是 插入或删除。如果回调是由于焦点, 聚焦,或对文本变量(属性)的更改 将为 -1。 |
postchangetext | str | 允许更改时文本将具有的值。 |
prechangetext | str | 更改前条目中的文本。 |
insertdeletetext | str | 插入或删除的文本(如果呼叫是由于 插入或删除。 |
validationtype | str | 指定小组件的验证选项,该选项指定何时进行验证。 |
widget | Widget | 正在验证的小组件对象。 |
add_numeric_validation(widget, when='focusout')
检查小部件内容是否为数字。将状态设置为“无效” 如果不是数字。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
widget | Widget | 要在其上添加验证的小组件。 | 必填 |
when | str | 指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation | 'focusout' |
add_option_validation(widget, options, when='focusout')
检查小部件内容是否在选项列表中。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
widget | Widget | 要在其上添加验证的小组件。 | 必填 |
when | str | 指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation | 'focusout' |
add_phonenumber_validation(widget, when='focusout')
检查小组件内容是否与电话号码模式匹配。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
widget | Widget | 要在其上添加验证的小组件。 | 必填 |
when | str | 指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation | 'focusout' |
add_range_validation(widget, startrange, endrange, when='focusout')
检查小部件内容是否在数字范围内(包括数字)。 如果数字超出范围,则将状态设置为“无效”。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
widget | Widget | 要在其上添加验证的小组件。 | 必填 |
when | str | 指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation | 'focusout' |
add_regex_validation(widget, pattern, when='focusout')
检查小部件内容是否与常规表达式匹配。设置的 如果未找到匹配项,则状态为“无效”。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
widget | Widget | 要在其上添加验证的小组件。 | 必填 |
when | str | 指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation | 'focusout' |
add_text_validation(widget, when='focusout')
检查小部件内容是否为 alpha。将状态设置为“无效” 如果不是文本。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
widget | Widget | 要在其上添加验证的小组件。 | 必填 |
when | str | 指定何时应用验证。有关选项的完整列表,请参阅方法文档字符串。add_validation | 'focusout' |
add_validation(widget, func, when='focusout', **kwargs)
将验证添加到 、 或 类型的小部件中。func 应接受类型的参数,并应返回布尔值。Entry``Combobox``Spinbox``ValidationEvent
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
widget | Widget | 将应用验证的小组件。 | 必填 |
func | Callable | 验证事件时将调用的函数 发生。 | 必填 |
when | str | 指示何时应发生验证事件。可能 值包括:焦点 - 每当小部件获得或失去焦点时焦点 - 每当小部件获得焦点时聚焦 - 每当小部件失去焦点时键 - 每当按下某个键时all - 在上述所有情况下验证 | 'focusout' |
kwargs | Dict | 传递给回调的可选参数。 | {} |
validator(func)
修饰标准函数,使其接收验证 tkinter 小部件上的验证命令返回的事件。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
func | Callable | 要修饰的验证函数。 | 必填 |