簡體   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