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