我创建了一个 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)