PyQt自动空格qlineedit字符

时间:2017-09-06 07:51:47

标签: python pyqt pyqt4 qlineedit

我有一个qlineedit用户输入验证码。我想能够在激活自动添加破折号的窗口时,每隔5个字符后自动分隔这些数字。 例如

12345 67890 12345 67890

1 个答案:

答案 0 :(得分:2)

如果位数是固定的,最好的选择是使用setInputMask(),在您的情况下:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    le = QLineEdit()
    le.setInputMask(("ddddd "*4)[:-1])
    le.show()
    sys.exit(app.exec_())

如果行数是可变的,最好使用textChanged信号并在必要时添加它,除此之外我们可以编写一个QValidator,如下所示

class LineEdit(QLineEdit):
    def  __init__(self, *args, **kwargs):
        QLineEdit.__init__(self, *args, **kwargs)
        self.textChanged.connect(self.onTextChanged)
        self.setValidator(QRegExpValidator(QRegExp("(\\d+)")))

    def onTextChanged(self, text):
        if len(text) % 6 == 5:
            self.setText(self.text()+" ")


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