我编写了一个验证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")
但是当我输入数字或特殊字符时,它接受并保存到数据库。有什么问题?
答案 0 :(得分:3)
验证器用于替换is_validate
之类的方法。你不需要这种方法
问题是您在用户输入后设置了验证器,因此已经太晚了。
创建行编辑时,您应该设置一次验证器:
self.line=QtGui.QLineEdit()
regex=QtCore.QRegExp("[a-z-A-Z_]+")
validator = QtGui.QRegExpValidator(regex)
self.line.setValidator(validator)
然后,用户无法在行编辑中键入任何特殊字符。每次用户键入时,验证器都会检查是否允许该字符。它不被允许,它不会添加到行编辑中。不再需要is_validate
。
答案 1 :(得分:2)
如果你希望python中的文本行只接受数字(int),你可以改变它:
regex = QRegExp("[0-9_]+")
validator = QRegExpValidator(regex)
self.tb3.setValidator(validator)