我在我的 pyqt5 程序中使用 QDoubleValidator 但它似乎不起作用
I use QDoubleValidator in my pyqt5 program but it doesn't seem to work
我创建了一个 QWidget 对象,其中有一些 lineEdits,我打算给它们添加一些约束,所以我实现了 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_())
我创建了一个 QWidget 对象,其中有一些 lineEdits,我打算给它们添加一些约束,所以我实现了 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_())