QLineEdit 中的自动格式化字节数组
Auto format byte array in QLineEdit
我希望我的 QLineEdit 在每两个字符后插入一个 space,我想要他的,因为在那个 QLineEdit 中我将插入十六进制字符。
我从 post: 尝试了下面的代码,它工作得很好,但是当我想删除一个字符时,它只在最后一个 space 出现时才起作用,然后我可以'不要删除任何东西。
from PyQt5.QtWidgets import QLineEdit, QApplication
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_())
如果你需要多次使用这个 class 我认为最好的方法是从 QLineEdit 继承自定义 class (就像你已经做的那样)但是添加 setInputMask() 到它。
试试这个:
from PyQt5.QtWidgets import QLineEdit, QApplication
import sys
class HexLineEdit(QLineEdit):
def __init__(self, *args, **kwargs):
QLineEdit.__init__(self, *args, **kwargs)
self.setInputMask("HH HH HH HH")
if __name__ == '__main__':
app = QApplication(sys.argv)
le = HexLineEdit()
le.show()
sys.exit(app.exec_())
我希望我的 QLineEdit 在每两个字符后插入一个 space,我想要他的,因为在那个 QLineEdit 中我将插入十六进制字符。
我从 post:
from PyQt5.QtWidgets import QLineEdit, QApplication
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_())
如果你需要多次使用这个 class 我认为最好的方法是从 QLineEdit 继承自定义 class (就像你已经做的那样)但是添加 setInputMask() 到它。
试试这个:
from PyQt5.QtWidgets import QLineEdit, QApplication
import sys
class HexLineEdit(QLineEdit):
def __init__(self, *args, **kwargs):
QLineEdit.__init__(self, *args, **kwargs)
self.setInputMask("HH HH HH HH")
if __name__ == '__main__':
app = QApplication(sys.argv)
le = HexLineEdit()
le.show()
sys.exit(app.exec_())