我有一个 qlineedit,用户可以在其中输入验证码。我希望能够每隔 5 个字符自动间隔这些数字,就像激活自动添加破折号的窗口时一样。 例如
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_())
关于python - PyQt 自动调整 qlineedit 字符间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46069642/