了解 QDoubleValidator 范围的行为

Understanding the behaviour of QDoubleValidator range

选项 'top' 和 'bottom' 的规范似乎有一个奇怪的行为。以下提供了一些有用的见解,但并不能解决所有问题。

使用代码:

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

app = QApplication(sys.argv)

input = QLineEdit()
input.setValidator(QDoubleValidator(0.00,10.00,5,notation=QDoubleValidator.StandardNotation))

input.show()
sys.exit(app.exec_())

输入框接受 100 以下的任何数字,但我希望只接受 10 以下的数字...例如,99.55656 就可以接受...

我错过了什么?

在您的示例中,行编辑不字面上接受值99.55656。这可以通过调用其 hasAcceptableInput 方法来确认,其中 returns False.

验证器允许输入值,因为这样做会产生有效的中间状态。根据 the docs,这种情况可能会发生,“如果多一点编辑可能会使输入可接受”。因此,在 99.55656 的特定情况下,删除 9 会产生有效的可接受状态。这似乎意味着“多一点编辑”应该被理解为 添加或删除 单个 字符 (其中符号是 StandardNotation).