我有一个qlineedit用户输入验证码。我想能够在激活自动添加破折号的窗口时,每隔5个字符后自动分隔这些数字。 例如
12345 67890 12345 67890
答案 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_())