【问题标题】:How to use QInputMask and QDoubleValidator in PyQt4?如何在 PyQt4 中使用 QInputMask 和 QDoubleValidator?
【发布时间】:2012-11-05 05:27:39
【问题描述】:

我在 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") ) 设置默认值,但 results = "65,43_.21"。

默认值为“543.21”时会变得最糟糕。我得到的结果是“54,3__.21”。

这是 QInputMask 中的错误吗? 如何使用我想要的 QInputMask 格式获得正确的结果,用户只能输入数字?

另外,如果我想验证双重结果,如何使用QDoubleValidator? 有效范围是 0.00 到 10,000.00。

【问题讨论】:

    标签: python pyqt4 qlineedit maskedinput


    【解决方案1】:

    QInpuMask 中没有错误。

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

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

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

    QDoubleSpinBox 似乎更合适:

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

    【讨论】:

      猜你喜欢
      • 2018-01-04
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 2017-04-29
      • 2019-04-15
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多