69 lines
2.4 KiB
Python
Raw Normal View History

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())