如何限制Qlineedit输入?

时间:2018-02-02 04:36:02

标签: python pyqt qlineedit

我有一个QLineEdit,我想限制输入一些字符并在其中。 我已经使用过QValidator,但我发现它不能(或者我可能不知道如何)限制输入一些字符只是为了它只允许某些输入,更进一步,设置输入限制,如[azAZ- 0-9]或者这样也会限制Unicode字符输入,这不是我想要的。有没有办法可以设置阻止列表,以防止输入一些非法字符?谢谢!

1 个答案:

答案 0 :(得分:1)

一种解决方案是实现您自己的QValidator,如下所示:

class LettersValidator(QValidator):
    def __init__(self, options, *args, **kwargs):
        QValidator.__init__(self, *args, **kwargs)
        self._options = options

    def validate(self, value, pos):
        if len(value) > 0:
            if value[-1] in self._options:
                return QValidator.Acceptable, value, pos
        else:
            if value == "":
                return QValidator.Intermediate, value, pos
        return QValidator.Invalid, value, pos


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QLineEdit()
    w.setValidator(LettersValidator("tam"))
    w.show()
    sys.exit(app.exec_())