mirror of
https://github.com/muziing/PySide6-Code-Tutorial.git
synced 2025-01-30 14:22:53 +08:00
d064fda12c
QLineEdit-验证器与掩码
69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
import sys
|
||
|
||
from PySide6 import QtGui, QtWidgets
|
||
|
||
"""
|
||
QLineEdit 验证器与掩码
|
||
|
||
单行文本编辑器可以设置验证器(Validator),比如限制只能输入一定范围内的数字等,设置验证器后,
|
||
只有满足验证器要求的字符才能被输入,否则用户输入不会显示在编辑器内
|
||
关于QValidator的详细信息,参考本项目QtGUI目录下对应小节
|
||
|
||
.setValidator(v: QValidator) 设置验证器
|
||
.validator() -> QValidator 获取验证器
|
||
可以通过调用.setValidator(0)来取消当前设置的验证器
|
||
|
||
掩码则是一种更为严格的验证方式,用户输入的每一个字符都必须严格符合该位掩码允许值
|
||
掩码可以单独使用,也可以与验证器配合使用
|
||
详情见文档:https://doc.qt.io/qt-6/qlineedit.html#inputMask-prop
|
||
|
||
.setInputMask(input_mask: str) 设置掩码
|
||
.inputMask() -> str 获取当前掩码
|
||
可以通过调用.setInputMask("")来取消当前设置的掩码
|
||
|
||
"""
|
||
|
||
|
||
class MyWidget(QtWidgets.QWidget):
|
||
def __init__(self, *args, **kwargs):
|
||
super().__init__(*args, **kwargs)
|
||
self.setWindowTitle("QLineEdit-验证器与掩码")
|
||
self.resize(800, 600)
|
||
self.setup_ui()
|
||
self.test_validator()
|
||
self.test_mask()
|
||
|
||
def setup_ui(self) -> None:
|
||
"""设置界面"""
|
||
|
||
self.line_edit = QtWidgets.QLineEdit()
|
||
self.ip_line_edit = QtWidgets.QLineEdit()
|
||
|
||
layout = QtWidgets.QFormLayout()
|
||
layout.addRow(QtWidgets.QLabel("输入两位整数:"), self.line_edit)
|
||
layout.addRow(QtWidgets.QLabel("IPv4地址:"), self.ip_line_edit)
|
||
self.setLayout(layout)
|
||
|
||
def test_validator(self) -> None:
|
||
"""测试验证器功能"""
|
||
|
||
# 创建一个整数验证器对象,其特点为限制只能输入范围内的整数
|
||
validator = QtGui.QIntValidator(10, 99, self.line_edit)
|
||
# 将验证器设置给line_edit
|
||
self.line_edit.setValidator(validator)
|
||
|
||
def test_mask(self) -> None:
|
||
"""测试掩码功能"""
|
||
|
||
# 创建掩码,详细语法见文档
|
||
ip_address_mask = "000.000.000.000;_" # 适用于IPv4地址的掩码,;后的_为占位符
|
||
# 设置输入掩码
|
||
self.ip_line_edit.setInputMask(ip_address_mask)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
app = QtWidgets.QApplication(sys.argv)
|
||
window = MyWidget()
|
||
window.show()
|
||
sys.exit(app.exec())
|