我在pyqt5程序中使用QDoubleValidator,但它似乎不是

2024-04-26 08:10:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个QWidget对象,其中有一些lineEdits,并打算向它们添加一些约束,因此实现了QDoubleValidator对象。 下面是我代码中的相关部分。你知道吗

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

但当我运行程序时,我发现我仍然可以输入123165.15641这样的数字。似乎验证器没有什么区别。你知道吗

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

线条编辑


Tags: 对象代码self程序信号数字区别qwidget
1条回答
网友
1楼 · 发布于 2024-04-26 08:10:18

默认情况下,QDoubleValidator使用科学符号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_())

相关问题 更多 >