2016-06-19 2 views
1

아래 코드와 같은 줄이 있습니다. I는 pnly 0을 입력 할 수 있으며, I는 0 만PyQt5 QIntValidator의 위/아래 설정 방법은 무엇입니까?

를 입력 할 수있는 1

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

이것을 사용

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

이를 이용한 3 개 가지 코드의 I은 2 가지 문제점을 가지고

다음과 같은 번호를 얻으려면이 번호가 필요합니다 : 5236147891 (숫자의 수는 중요합니다. QIntValidator에 숫자를 입력하지 않으면 큰 숫자를 입력 할 수 없습니다)

http://pyqt.sourceforge.net/Docs/PyQt4/qintvalidator.html#QIntValidator-2 을 기반으로 두 번째 작업해야합니다. 하지만 :(하지 않습니다

편집 :

OK, 분명히 그 topest 위에, 나는 할 수있다, 내가 필요한 것보다 한 자리 작 QIntValidator의 내 QLineEdit을 확인하거나 증가하는 당신이 알고있는 다른 방법을 수행하십시오. 맨?

+0

"작동하지 않는다"는 것은 무엇을 의미합니까? 정확한 오류를 설명하십시오. – Wieland

+0

"작동하지 않습니다"라는 말은 999999999보다 큰 숫자를 입력 할 수는 없지만 9999999999 (한 자리 더 입력)해야한다는 뜻입니다. –

답변

1

QIntValidator 클래스는 범위 -2147483647, 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)