2012-11-05 33 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)