我有一个像下面的代码一样的行编辑。在 3 个不同的代码中我有 2 个不同的问题:
self.rnr_id_num_le = QLineEdit()
self.rnr_id_num_le.setValidator(QIntValidator(9999999999, 0))
使用这个我只能输入0和1。
and
self.rnr_id_num_le = QLineEdit()
self.rnr_id_num_le.setValidator(QIntValidator(0, 9999999999))
使用这个我只能输入0。
我需要它来获得这样的数字:5236147891(位数很重要。如果我不在 QIntValidator 中输入任何数字,它不会让我输入这么大的数字)
基于http://pyqt.sourceforge.net/Docs/PyQt4/qintvalidator.html#QIntValidator-2第二个必须有效;但事实并非如此:(
EDIT:
好吧,显然它是顶级最好的顶级,如果可以的话,比我需要的少一位数。你知道验证我的 QLineEdit 的另一种方法,或者增加 QIntValidator 顶部吗?
The QIntValidator类仅支持范围内的有符号值-2147483648
to 2147483647
。如果您需要此范围之外的值,请使用QDoubleValidator,支持无限的浮点值。
您可以创建一个简单的子类QDoubleValidator
调整行为,使其更像QIntValidator
:
class BigIntValidator(QtGui.QDoubleValidator):
def __init__(self, bottom=float('-inf'), top=float('inf')):
super(BigIntValidator, self).__init__(bottom, top, 0)
self.setNotation(QtGui.QDoubleValidator.StandardNotation)
def validate(self, text, pos):
if text.endswith('.'):
return QtGui.QValidator.Invalid, text, pos
return super(BigIntValidator, self).validate(text, pos)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)