#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 开发团队  :  Sunniwell
# 开发人员  :  chengc
# 开发时间  :  2021/6/18 11:21
# 文件名称  :  qLineEditMask.py
# 开发工具  :  PyCharm

r"""
用掩码限制QLineEdit控件的输入

A   ASCII字母字符是必须输入的(A-Z、a-z)
a   ASCII字母字符是允许输入的,但不是必需的(A-Z、a-z)
N   ASCII字母字符是必须输入的(A-Z、a-z、0-9)
n   ASCII字母字符是允许输入的,但不是必需的(A-Z、a-z、0-9)
X   任何字符都是必须输入的
x   任何字符都是允许输入的,但不是必需的
9   ASCII数字字符是必须输入的(0-9)
0   ASCII数字字符是允许输入的,但不是必需的(0-9)
D   ASCII数字字符是必须输入的(1-9)
d   ASCII数字字符是允许输入的,但不是必需的(1-9)
#   ASCI数字字符或加减符号是允许输入的,但不是必需的
H   十六进制格式字符是必须输入的(A-F、a-f、0-9)
h   十六进制格式字符是允许输入的,但不是必需的(A-F、a-f、0-9)
B   二进制格式字符是必须输入的(0,1)
b   二进制格式字符是允许输入的,但不是必需的(0,1)
>   所有的字母字符都大写
<   所有的字母字符都小写
!   关闭大小写转换
\   使用""转义上面列出的字符
"""

import sys
from PyQt5.QtWidgets import *


class QLineEditMask(QWidget):
    def __init__(self):
        super(QLineEditMask, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('输入掩码设置')

        ipLineEdit = QLineEdit()
        macLineEdit = QLineEdit()
        dataLineEdit = QLineEdit()
        licenseLineEdit = QLineEdit()

        # 设置掩码
        ipLineEdit.setInputMask('DDD.DDD.DDD.DDD;_')
        macLineEdit.setInputMask('HH:HH:HH:HH:HH:HH;_')
        dataLineEdit.setInputMask('DDDD-DD-DD;_')
        licenseLineEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;_')

        fromLayout = QFormLayout()
        fromLayout.addRow('数字掩码', ipLineEdit)
        fromLayout.addRow('MAC掩码', macLineEdit)
        fromLayout.addRow('日期掩码', dataLineEdit)
        fromLayout.addRow('证书掩码', licenseLineEdit)

        self.setLayout(fromLayout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = QLineEditMask()
    mainWin.show()
    sys.exit(app.exec_())
