PyQt auto-space qlineedit 字符
PyQt auto-space qlineedit characters
我有一个 qlineedit,用户可以在其中键入验证码。我希望能够每隔 5 个字符自动 space 这些数字,就像激活 windows 时自动添加破折号一样。
例如
12345 67890 12345 67890
如果位数是固定的,最好的选择是使用 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_())
我有一个 qlineedit,用户可以在其中键入验证码。我希望能够每隔 5 个字符自动 space 这些数字,就像激活 windows 时自动添加破折号一样。 例如
12345 67890 12345 67890
如果位数是固定的,最好的选择是使用 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_())