如何设置PyQt5 QIntValidator的上下?

2024-05-18 07:12:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个行编辑像下面的代码。在3个不同的代码中,我有两个不同的问题:

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

用这个我可以直接输入0和1。在

以及

^{pr2}$

用这个我只能输入0。在

我需要它来得到一个这样的数字:5236147891(位数很重要。如果我不在QIntValidator中输入任何数字,它就不会让我输入这么大的数字)

基于 http://pyqt.sourceforge.net/Docs/PyQt4/qintvalidator.html#QIntValidator-2 第二种方法必须有效,但它不起作用:

编辑:

好吧,显然它的最高点,如果可以的话,比我需要的少一位数。你知道另一种方法来验证我的QLineEdit,或者增加QIntValidator的top吗?在


Tags: 方法代码selfleidhttp编辑数字
1条回答
网友
1楼 · 发布于 2024-05-18 07:12:56

QIntValidator类只支持-2147483648到{}范围内的有符号值。如果需要超出此范围的值,请使用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)

相关问题 更多 >