2012-11-05 2 views
1

PyQt4에서 QLineEdit lineEdit_X_Position 입력을 만들었습니다.PyQt4에서 QInputMask 및 QDoubleValidator를 사용하는 방법은 무엇입니까?

입력 마스크를 self.ui.lineEdit_X_Position.setInputMask ("00,000.00; _")와 함께 생성했습니다.

lineEdit을 기본값 self.ui.lineEdit_X_Position.setText (format ('6543.21', ", .2f"))로 설정했습니다.

UI를 보면 X_Position이 "_6,543.21"대신 "6_, 543.21"으로 표시됩니다. self.ui.lineEdit_X_Position.setText (format ('6543.21', "9.2f"))로 기본값을 설정하려했지만 결과는 "65,43_.21"입니다.

기본값이 "543.21"일 때 최악입니다. 나는 "54,3 __. 21"이라는 결과를 얻는다.

QInputMask의 버그입니까? 숫자 만 입력 할 수있는 QInputMask 형식으로 올바른 결과를 얻으려면 어떻게해야합니까?

또한 QDoubleValidator를 사용하는 방법에 대해 이중 결과의 유효성을 검사하려면 어떻게해야합니까? 유효 범위는 0.00에서 10,000.00입니다.

답변

1

QInpuMask에는 버그가 없습니다.

마스크를 설정하면 특정 값을 여러 가지 방법으로 입력 할 수 있습니다. 모두과 똑같이 유효합니다. 예를 들어, 값 "543.2"는 등 5_,_4_3._2 또는 __,543.2_ 또는 _5,4__3._2로서 사용자가 입력 할 수

이러한 값은 프로그래밍 입력하면 Qt를는 "바람직한"인 다양한 possiblities 어떤 추측 할 수있다 하나를 입력하고 빈 칸에 보통 입력 할 방향으로 채 웁니다. 따라서보고있는 결과물은 정확하고 예상대로 정확합니다.

그러나

당신이 고정 된 패턴에서 특정 범위에 숫자 값을 제한하는 오히려 이상의 문자를 시도하고 있음을 주어, 입력 마스크는 올바른 선택 정말?

self.spinXPosition = QtGui.QDoubleSpinBox(self) 
self.spinXPosition.setRange(0, 10000) 
self.spinXPosition.setDecimals(2) 
:

QDoubleSpinBox는 훨씬 더 적합 할 것 같다

관련 문제