PyQt5 QLine setInputMask + setValidator IP地址

时间:2018-12-20 17:49:16

标签: python pyqt pyqt5 qlineedit

将setInputMask和setValidator IPv4地址组合到QlineEdit中的问题

我有一个QLineEdit来设置我的IPv4地址。 第一次,我将我的QLineEdit与setInputMask设置为具有“ ...”。 第二次,我使用Ip验证程序来检查它是否是IP地址

问题是当我分开使用时,它可以工作,但是在一起时,我无法编辑QLineEdit ...

self.lineEdit_IP = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_IP.setGeometry(120,0,160,30)
self.lineEdit_IP.setStyleSheet("background-color: rgb(255, 255, 255);")
self.lineEdit_IP.setAlignment(QtCore.Qt.AlignHCenter)
self.lineEdit_IP.setInputMask("000.000.000.000")
#Set IP Validator
regexp = QtCore.QRegExp('^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){0,3}$')
validator = QtGui.QRegExpValidator(regexp)
self.lineEdit_IP.setValidator(validator)

1 个答案:

答案 0 :(得分:0)

为QLine设置遮罩会将其内容从空更改为指定符号。在您的情况下,“空” QLine实际上看起来像“ ... ”。这就是正则表达式失败的原因。 您可以使用自己的替代验证器:

number | boolean

并像这样使用它

mapValues3

带有掩码,例如“ 000.000.000.000; _ ”或“ 000.000.000.000; ” <-末尾带有空格