我创建了一个 QLineEdit 并为其附加了一个自定义 QValidator。我试图向fixup()
我的 QValidator 添加一个函数。当我在 QLineEdit 中输入一些文本时,它会调用validate()
,然后调用fixup()
,最后validate()
再次调用,但仍然像修复之前的文本一样。我做错了什么?为什么 QLineEdit 没有被修复更新?
mylineedit = QtGui.QLineEdit()
mylineedit.setValidator(MyValidator())
class MyValidator(QtGui.QRegExpValidator):
def __init__(self, parent=None):
rx = QtCore.QRegExp('\\d+ m')
super().__init__(rx, parent)
def validate(self, text, pos):
r = super().validate(text, pos)
print(r)
return r
def fixup(self, text):
if len(text) == 0:
text = '0 m'
else:
text = text.strip() + ' m'
print(text)
return text
输出将类似于(如果我按“1”+ Enter):
(PySide.QtGui.QValidator.State.Intermediate, '1', 1)
1 m
(PySide.QtGui.QValidator.State.Intermediate, '1', 1)