python - PyQt 自动调整 qlineedit 字符间距

标签 python pyqt pyqt4 qlineedit

我有一个 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/

相关文章:

qt - pyqt4 - singleapplication - 打开原始窗口以尝试第二次打开应用程序

python - Django 表单、 View 和 forms.py 不能一起工作

python - 在python中将win32ui DataBitmap转换为数组

python 表达式中的赋值顺序

python - 应用程序在另一台计算机上执行时以错误的大小显示小部件

python - QTextEdit.find() 在 Python 中不起作用

Python 请求给出词法 JSON 错误。如何解决这个问题?

python - 派生 python 对象的深拷贝

python - 覆盖 Qt MouseEvent 但仅当类变量为 True 时

python - 为 Python 3 mac 安装 PyQt4