python - 我在我的 pyqt5 程序中使用 QDoubleValidator 但它似乎不起作用

标签 python python-3.x pyqt pyqt5 qlineedit

我创建了一个 QWidget 对象,其中有一些 lineEdit,我打算给它们添加一些约束,所以我实现了 QDoubleValidator 对象。 以下是我的代码中的相关部分。

self.lineEdit_taxRate= QLineEdit()
self.lineEdit_taxRate.setValidator(QDoubleValidator(0.0, 100.0, 6))

但是当我运行程序时,我发现我仍然可以输入数字,如 123165.15641。验证器似乎没有任何区别。

我想知道我错过了哪一步或者验证器会触发一些信号。

线路编辑

最佳答案

默认情况下,QDoubleValidator 使用 ScientificNotation notation ,并且在该表示法中,123165.15641 是一个可能的有效值,因为它可以转换为 123165.15641E-100,这是一个介于 0 和 100 之间的数字。在这种情况下,解决方案是确定它使用标准表示法:

from PyQt5 import QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.lineEdit_taxRate= QtWidgets.QLineEdit()
        self.lineEdit_taxRate.setValidator(
            QtGui.QDoubleValidator(
                0.0, # bottom
                100.0, # top
                6, # decimals 
                notation=QtGui.QDoubleValidator.StandardNotation
            )
        )
        self.setCentralWidget(self.lineEdit_taxRate)

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

关于python - 我在我的 pyqt5 程序中使用 QDoubleValidator 但它似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54741145/

相关文章:

Python 导入错误。循环进口

python - 在 Python 中从 Chrome 获取所有打开的网站

python - Algolia reindex 命令在 urllib3 中失败并出现异常

python - Qt Python 单选按钮 : activate event

python - 信件的 XML 解析错误?

Python 字符串上部

Python 多处理。池和内存

linux - 无法在 ubuntu 17 上安装 python3-pyqt5

python - 用于安全密码处理的 pyside 小部件

python - 神秘的换行符被添加到 QPlainTextEdit 的末尾