Python 当我使用QtGui.QIntValidator()时,它将文本的最大长度设置为10个整数?
我正在使用PyQt5构建桌面应用程序,但是,我有一些QlineEdit字段,我希望它们只接受整数。当我使用QtGui.QIntValidator()时,我发现即使我没有使用setMaxLength()函数,我可以输入的最大整数数也是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导入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_())