如何在pyqt中限制QLineEdit中的用户输入

23

我有一个 QLineEdit,希望它只接受整数。它应该像输入掩码一样工作。 但我不想使用 inputmask,因为如果用户单击 QLineEdit,光标将在鼠标单击的位置处。 用户需要导航到0位置并键入任何内容。

是否有此类功能的替代方法。

2个回答

55

您可以使用QValidator。它的工作方式如下:

# from PyQt5.QtGui import QIntValidator
# from PyQt6.QtGui import QIntValidator

# allow only integers
onlyInt = QIntValidator()
onlyInt.setRange(0, 4)
lineEdit.setValidator(onlyInt)

4
这是正确的方法。使用验证器(validator)。 - Enkum
我该如何将这个与 qlineedit() 结合使用? - Ben
1
@Ben lineEdit 是一个 QLineEdit() 小部件,所以在这行代码之前假设有以下内容:lineEdit = QLineEdit() - alielbashir

9

您可以使用异常处理来进行验证:

number = self.ui.number_lineEdit.text()
try:
    number = int(number)
except Exception:
    QtGui.QMessageBox.about(self, 'Error','Input can only be a number')
    pass

您还可以使用验证器来验证输入字符串。


我听说过“验证器”,但是没有找到正确的示例来设置它到“QLineEdit”中。与此同时,我会尝试您的方法。我认为验证器是专业方法的好选择。 - Rao
1
尝试从这个问题中学习:https://dev59.com/S1bTa4cB1Zd3GeqP_YWM - scottydelta
3
使用验证器的好例子在这里:http://snorf.net/blog/2014/08/09/using-qvalidator-in-pyqt4-to-validate-user-input/ - maurobio
3
@maurobio - 链接更新:https://snorfalorpagus.net/blog/2014/08/09/validating-user-input-in-pyqt4-using-qvalidator - ZF007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接