2012-11-05 35 views
1

我在PyQt4中創建了一個QLineEdit lineEdit_X_Position輸入。如何在PyQt4中使用QInputMask和QDoubleValidator?

我用self.ui.lineEdit_X_Position.setInputMask(「00,000.00; _」)創建了一個輸入掩碼。

我使用默認值self.ui.lineEdit_X_Position.setText(format('6543.21',「,.2f」))設置lineEdit。

當我查看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的是「優選的」一個,只是按照他們通常打字的方向填空。所以你看到的輸出是正確的,和預期完全一樣。

但考慮到你而不是字符試圖值限制數在一定範圍內的固定模式,是輸入掩碼真的是正確的選擇?

一個QDoubleSpinBox似乎是一個更好的契合:

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