32 비트 (-2147483648 - 2147483647)보다 큰 정수로 동작하도록 PyQt 스피드 박스를 수정할 수 있습니까? 64 비트 int 데이터 형식으로 C++에서 새로운 스핀 상자를 작성할 수 있다는 것을 알고 있지만이 작업은 복잡 할 것입니다.64 비트 정수를 가진 PyQt4 스핀 박스
0
A
답변
0
QDoubleSpinBox을 사용하면 32 비트보다 큰 값의 스핀 상자를 얻을 수 있습니다.
이름에서 알 수 있듯이 최대 2 ** 53 (9,007199254740,992)의 이중 (즉, 부동 소수점) 값을 제공합니다. 정수 값을 원하면 setDecimals(0)을 사용하여 정밀도를 0으로 설정하면됩니다. (주의 : 어떤 이유로 든 Qt Designer는 내장 된 스핀 박스 중 하나에 대해 99,999,999보다 큰 최대 값을 설정하지 않으므로 "수동"으로해야합니다.)
당신이 2보다 큰 ** (53), 서브 클래스 QAbstractSpinBox는, 관련 방법 (stepBy, stepEnabled, validate 가능성이 fixup를) 다시 구현하고 제공 값하려면 어떤 다른 방법이 필요하다고 생각 (예를 들어, value/setValue
).
2
힌트를 보내 주셔서 감사합니다. 나는 QDoubleSpinBox를 시도했지만 수동으로 값을 설정하려하지 않았습니다. 왜냐하면 내 목적에 맞지 않기 때문에 자기 자신의 스핀 박스를 썼어. 코드 밑. 다른 사람에게 도움이 될지도 모릅니다. QAbstractSpinBox 서브 클래 싱에 관한 문서는 약간 드물다. 기본 최대 값은 numpy.uint64의 최대 값과 일치합니다. 이론 상으로는 제한이 없어야합니다. QLineEdit이 표현에 사용되기 때문입니다. 20보다 긴 숫자가 필요한 경우 유효성 검사기의 정규 표현식을 적용하면됩니다.
class BigIntSpinbox(QtGui.QAbstractSpinBox):
def __init__(self, parent=None):
super(BigIntSpinbox, self).__init__(parent)
self._singleStep = 1
self._minimum = -18446744073709551616
self._maximum = 18446744073709551615
self.lineEdit = QtGui.QLineEdit(self)
rx = QtCore.QRegExp("[1-9]\\d{0,20}")
validator = QtGui.QRegExpValidator(rx, self)
self.lineEdit.setValidator(validator)
self.setLineEdit(self.lineEdit)
def value(self):
try:
return int(self.lineEdit.text())
except:
raise
return 0
def setValue(self, value):
if self._valueInRange(value):
self.lineEdit.setText(str(value))
def stepBy(self, steps):
self.setValue(self.value() + steps*self.singleStep())
def stepEnabled(self):
return self.StepUpEnabled | self.StepDownEnabled
def setSingleStep(self, singleStep):
assert isinstance(singleStep, int)
# don't use negative values
self._singleStep = abs(singleStep)
def singleStep(self):
return self._singleStep
def minimum(self):
return self._minimum
def setMinimum(self, minimum):
assert isinstance(minimum, int) or isinstance(minimum, long)
self._minimum = minimum
def maximum(self):
return self._maximum
def setMaximum(self, maximum):
assert isinstance(maximum, int) or isinstance(maximum, long)
self._maximum = maximum
def _valueInRange(self, value):
if value >= self.minimum() and value <= self.maximum():
return True
else:
return False
관련 문제
- 1. PyQt4 및 64 비트 Python
- 2. 루아는 64 비트 정수를 사용합니까?
- 3. AVX는 64 비트 정수를 64 비트 부동 소수점으로 변환합니다.
- 4. 파이썬에서 64 비트 정수를 얻는 것
- 5. Microsoft Jet 4.0은 64 비트 정수를 지원합니까?
- 6. Java 64 비트 정수를 부동 소수점으로 해석합니다.
- 7. PHP : 64 비트 정수를 문자열로 변환
- 8. PHP에 64 비트 정수를 저장하는 방법은 무엇입니까?
- 9. 64 비트 리틀 엔디안 정수를 숫자로 변환하십시오.
- 10. HTML 월 스핀 박스
- 11. 64 비트 정수를 7 비트 문자의 배열로 변환하십시오.
- 12. 64 비트 PHP 설치시 32 비트 정수를 사용하는 방법은 무엇입니까?
- 13. 32 비트 부호없는 정수를 사용하여 64 비트 수를 곱하는 알고리즘
- 14. 2 개의 32 비트 정수를 곱하여 64 비트 정수를 생성하려면 어떻게합니까?
- 15. C++에서 32 비트 정수와 64 비트 정수를 안전하게 비교하고 부호있는 정수를 내부적으로 비교하는 방법은 무엇입니까?
- 16. tkinter 스핀 박스 더블 제로
- 17. php5는 64 비트 정수를 double로 변환합니다 - 64 비트 강제 실행 방법은 무엇입니까?
- 18. 64 비트 정수를 이진 값으로 저장하려면 어떻게해야합니까? 저장된 64 비트 정수는 어떻게 읽습니까?
- 19. 64 비트 컴퓨터에서 C++ 포인터
- 20. 이클립스 주노 64 비트 충돌 64 비트
- 21. 64 비트 Java 및 64 비트 액세스
- 22. long (64 비트) 정수를 지원하는 스크립트 언어는 무엇입니까?
- 23. D 프로그래밍 : 파일에서 64 비트 정수를 읽으려면 어떻게해야합니까?
- 24. GCC 4.4.1에서 64 비트 정수를 인쇄하는 방법은 무엇입니까?
- 25. Jet 엔진 (액세스) 데이터베이스에 64 비트 정수를 저장 하시겠습니까?
- 26. SWIG가 Windows에서 intptr_t에 64 비트 정수를 사용하는 방법
- 27. 두 개의 32 비트 정수를 C에서 64 비트로 사용하려면 어떻게해야합니까?
- 28. 자바 스크립트/PHP 부동 소수점으로 64 비트 정수를 해석합니다.
- 29. C++ 교차 플랫폼에서 64 비트 부호없는 정수를 정의하는 방법
- 30. 64 비트 정수를 문자 배열로 변환하고 다시 변환하려면 어떻게해야합니까?