在QLineEdit中自动格式化字节数组

问题描述

我希望我的QLineEdit在每两个字符后插入一个空格,我想要他,因为在那个QLineEdit中,我将在十六进制字符上插入。 我从下面的帖子中尝试了以下代码PyQt auto-space qlineedit characters,它的工作原理非常好,但是当我想删除字符时,它仅在出现最后一个空格时才起作用,然后我什么也不能删除

from PyQt5.QtWidgets import QLineEdit,QApplication

class LineEdit(QLineEdit):
    def  __init__(self,*args,**kwargs):
        QLineEdit.__init__(self,**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继承自定义类(就像您已经做过的那样),但向其中添加setInputMask()。

尝试一下:

from PyQt5.QtWidgets import QLineEdit,QApplication
import sys

class HexLineEdit(QLineEdit):
    def  __init__(self,*args,**kwargs):
        QLineEdit.__init__(self,**kwargs)
        self.setInputMask("HH HH HH HH")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    le = HexLineEdit()
    le.show()
    sys.exit(app.exec_())