【问题标题】:QLineEdit Accepts Only Character in PyQt4QLineEdit 只接受 PyQt4 中的字符
【发布时间】:2016-03-27 18:03:01
【问题描述】:

我写了一个方法来验证 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")

但是当我输入数字或特殊字符时,它会接受并保存到数据库中。怎么了?

【问题讨论】:

    标签: python pyqt qlineedit


    【解决方案1】:

    验证器用于替换is_validate 之类的方法。你不需要这个方法。
    问题是您在用户输入后设置验证器,所以已经太迟了。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-21
        • 1970-01-01
        • 1970-01-01
        • 2020-05-17
        • 2012-11-05
        • 2016-07-01
        • 1970-01-01
        相关资源
        最近更新 更多