Python 当我使用QtGui.QIntValidator()时,它将文本的最大长度设置为10个整数?

Python 当我使用QtGui.QIntValidator()时,它将文本的最大长度设置为10个整数?,python,validation,user-interface,pyqt5,Python,Validation,User Interface,Pyqt5,我正在使用PyQt5构建桌面应用程序,但是,我有一些QlineEdit字段,我希望它们只接受整数。当我使用QtGui.QIntValidator()时,我发现即使我没有使用setMaxLength()函数,我可以输入的最大整数数也是10 在谷歌搜索之后,我没有发现关于这个问题的任何线索 从PyQt5导入QtCore、QtGui、qtwidget 类Ui_对话框(对象): def设置UI(自我,对话框): setObjectName(“对话框”) 对话框。调整大小(400300) self.lin

我正在使用PyQt5构建桌面应用程序,但是,我有一些QlineEdit字段,我希望它们只接受整数。当我使用QtGui.QIntValidator()时,我发现即使我没有使用setMaxLength()函数,我可以输入的最大整数数也是10

在谷歌搜索之后,我没有发现关于这个问题的任何线索

从PyQt5导入QtCore、QtGui、qtwidget
类Ui_对话框(对象):
def设置UI(自我,对话框):
setObjectName(“对话框”)
对话框。调整大小(400300)
self.lineEdit=QtWidgets.QLineEdit(对话框)
self.lineEdit.setGeometry(QtCore.QRect(90,40181,31))
self.lineEdit.setObjectName(“lineEdit”)
self.intInputValidation=QtGui.QIntValidator()
self.lineEdit.setValidator(self.intInputValidation)
自重传(对话框)
QtCore.QMetaObject.connectSlotsByName(对话框)
def重新传输(自我,对话框):
_translate=QtCore.QCoreApplication.translate
setWindowTitle(_translate(“Dialog”,“Dialog”))
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
Dialog=qtwidts.QDialog()
ui=ui\u对话框()
ui.setupUi(对话框)
Dialog.show()
sys.exit(app.exec_())

顶部:int 此属性保存验证器的最高可接受值

默认情况下,此属性的值从可用的最高有符号整数(通常为2147483647)派生

尝试使用
setTop(int)
增加它

QRegExp类

QRegExp类使用正则表达式提供模式匹配


QRegExpValidator类

QRegExpValidator类用于根据正则表达式检查字符串


我明白了,这对我不起作用。是否有其他工作可以使此验证成为可能?不明白您的问题到底是什么?@ipaleka问题是可用的最高有符号整数是
2147483647
。如果您试图设置一个大于该值的值,PyQt将引发溢出错误。当然,Python支持更大的整数,但PyQt不能强制Qt这样做——因此出现了先发制人的错误。
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(90, 40, 181, 31))
        self.lineEdit.setObjectName("lineEdit")
    
#        self.intInputValidation = QtGui.QIntValidator()
#        self.lineEdit.setValidator(self.intInputValidation)

        rx  = QtCore.QRegExp("[0-9]{30}")                           # +++    
        val = QtGui.QRegExpValidator(rx)                            # +++   
        self.lineEdit.setValidator(val)                             # +++   
        
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())