2

我在 PyQt4 中创建了一个 QLineEdit lineEdit_X_Position 输入。

我用 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。

4

1 回答 1

2

中没有错误QInpuMask

您设置的掩码允许以多种不同方式输入某些值——所有这些方式都同样有效。例如,用户可以将值“543.2”输入为5_,_4_3._2or __,543.2_、 or_5,4__3._2等​​。

当以编程方式输入这样的值时,Qt 无法猜测各种可能性中的哪一种是“首选”的,而只是按照它们通常键入的方向填充空白。因此,您看到的输出是正确的,并且完全符合预期。

但是,鉴于您试图将值限制为某个范围内的数字而不是固定模式中的字符,那么输入掩码真的是正确的选择吗?

AQDoubleSpinBox似乎更合适:

self.spinXPosition = QtGui.QDoubleSpinBox(self)
self.spinXPosition.setRange(0, 10000)
self.spinXPosition.setDecimals(2)
于 2012-11-05T19:05:10.330 回答