Python QLineEdit只接受PyQt4中的字符

Python QLineEdit只接受PyQt4中的字符,python,pyqt,qlineedit,Python,Pyqt,Qlineedit,我已经编写了一个方法来验证lineEdit中的字符: def is_validate(self): regex = QtCore.QRegExp("[a-z-A-Z_]+") txtDepartment_validator = QtGui.QRegExpValidator(regex, self.txtDepartment) self.txtDepartment.setValidator(txtDepartment_validator) return True

我已经编写了一个方法来验证lineEdit中的字符:

 def is_validate(self):
    regex = QtCore.QRegExp("[a-z-A-Z_]+")
    txtDepartment_validator = QtGui.QRegExpValidator(regex, self.txtDepartment)
    self.txtDepartment.setValidator(txtDepartment_validator)
    return True
并使用下面的另一种方法

def control_information(self):
    if(self.is_validate()):
        //Database operations
    else:
        QtGui.QMessageBox.text("Please enter valid characters")

但当我输入数字或特殊字符时,它会接受并保存到数据库中。有什么问题吗?

验证器用于替换类似于
is\u validate
的方法。您不需要这种方法。
问题是,您在用户键入后设置了验证器,因此已经太晚了

创建行编辑时,应设置验证程序一次:

self.line=QtGui.QLineEdit()
regex=QtCore.QRegExp("[a-z-A-Z_]+")
validator = QtGui.QRegExpValidator(regex)
self.line.setValidator(validator)

然后,用户不可能在行编辑中键入任何特殊字符。每次用户输入时,验证器都会检查字符是否被允许。这是不允许的,不会添加到行编辑中。不再需要验证

如果希望python中的文本行只接受数字(int),可以如下更改:

    regex = QRegExp("[0-9_]+")
    validator = QRegExpValidator(regex)
    self.tb3.setValidator(validator)