繁体   English   中英

QLineEdit仅接受PyQt4中的字符

[英]QLineEdit Accepts Only Character in PyQt4

我编写了一个验证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_validate这样的方法。 你不需要这种方法。
问题是你在用户输入后设置了验证器,所以已经太晚了。

在创建行编辑时,应该设置一次验证器:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM