说明
在实际应用中,常常需要在界面上控制或限制用户的输入行为,以此来简化数据的处理。在 QT中,我们可以利用输入掩码来达到这种效果,例如 IP 地址、MAC地址的输入。
基本属性
掩码字符 | 说明 |
---|---|
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)是允许输入的,但不是必需输入的 |
> | 所有的字母字符都大写 |
< | 所有的字母字符都小写 |
! | 关闭大小写转换 |
** | 使用""转义上面列出的字符 |
测试Demo
from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QLineEdit
import sys
class QLineEditMaskDemo(QWidget) :
def __init__(self):
super(QLineEditMaskDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('使用掩码限制QLineEdit控件的输入')
self.resize(500, 150)
formLayout = QFormLayout() # 表单布局
ipLineEdit = QLineEdit() # ip输入框
macLineEdit = QLineEdit() # mac地址输入框
dateLineEdit = QLineEdit() # 日期输入框
licenseLineEdit = QLineEdit() # 许可恒输入框
# 设置输入数据格式, 以"_"占位, ASCII数字字符是允许输入的,但不是必需的(0-9)
ipLineEdit.setInputMask('000.000.000.000;_')
# 设置输入数据格式, 以"_"占位, 十六进制格式字符是必须输入的(A-F、a-f、0-9)
macLineEdit.setInputMask('HH:HH:HH:HH:HH:HH;_')
# 设置输入数据格式, 例如: 2019-12-12
dateLineEdit.setInputMask('0000-00-00')
# 设置输入数据格式, 以"#"占位, ">"表示所有的字母字符都大写
licenseLineEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#')
# 控件添加到表单布局,
formLayout.addRow('数字掩码', ipLineEdit)
formLayout.addRow('Mac掩码', macLineEdit)
formLayout.addRow('日期掩码', dateLineEdit)
formLayout.addRow('许可证掩码', licenseLineEdit)
self.setLayout(formLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = QLineEditMaskDemo()
main.show()
sys.exit(app.exec_())