了解 QDoubleValidator 范围的行为
Posted
技术标签:
【中文标题】了解 QDoubleValidator 范围的行为【英文标题】:Understanding the behaviour of QDoubleValidator range 【发布时间】:2022-01-01 11:04:54 【问题描述】:选项“top”和“bottom”的规范似乎有一个奇怪的行为。以下answered question 提供了一些有用的见解,但并不能解决所有问题。
附上代码:
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 就可以了...
我错过了什么?
【问题讨论】:
【参考方案1】:在您的示例中,行编辑不字面上接受值99.55656
。这可以通过调用其hasAcceptableInput 方法来确认,该方法返回False
。
验证器允许输入值,因为这样做会产生有效的中间状态。根据the docs,这可能发生在“如果多一点编辑可能会使输入可接受”。所以在99.55656
的特定情况下,删除9
会产生一个有效的可接受状态。这似乎意味着应该将“多一点编辑”理解为添加或删除一个单个字符(符号为StandardNotation
)。
【讨论】:
以上是关于了解 QDoubleValidator 范围的行为的主要内容,如果未能解决你的问题,请参考以下文章