我有一个 qlineedit,用户在其中输入验证码。我希望能够每隔 5 个字符自动间隔这些数字,就像激活自动添加破折号的窗口时一样。
例如
12345 67890 12345 67890
如果位数是固定的,最好的选择是使用setInputMask() http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html#setInputMask,在你的情况下:
if __name__ == '__main__':
app = QApplication(sys.argv)
le = QLineEdit()
le.setInputMask(("ddddd "*4)[:-1])
le.show()
sys.exit(app.exec_())
如果行数可变,最好使用textChanged http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html#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_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)