如何设置 PyQt5 QIntValidator 的顶部和底部?



我有一个类似于下面代码的行编辑。在3个不同的代码中,我有2个不同的问题:

self.rnr_id_num_le = QLineEdit()
self.rnr_id_num_le.setValidator(QIntValidator(9999999999, 0))

使用它,我可以输入0和1。

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第二个必须起作用;但事实并非如此:(

编辑:

好吧,显然是它的最高顶部(如果我可以)比我需要的少于一位。您知道另一种验证我的Qlineit的方法,还是增加Qintvalidator的顶部?

Qintvalidator类仅支持-2147483648范围内的签名值至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)

最新更新