带QValid的PyQt QLineEdit

2024-10-01 11:34:11 发布

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

我的项目中有一个QLineEdit。 我想在lineEdit上使用QValidation。在

#Create lineEdit
itemValue = QtWidgets.QLineEdit()
#Create валидатор
objValidator = QtGui.QDoubleValidator(self)
#setup range
objValidator.setRange(-10.0, 100.0, 5)
#lineEdit with validation
itemValue.setValidator(objValidator)

但是不太好用。我可以输入我想要的,除了符号。 射程也不行!我可以输入100500或-100500,但我想,用户只能输入范围内的数字。在

我应该如何使用范围? 我需要帮助:)

谢谢你们的帮助,伙计们!在


Tags: 项目selfcreatewithsetuprangeqtguiqtwidgets
3条回答

默认情况下,验证器不会阻止输入超出范围的值,如果输入的值是Invalid or Intermediate,它也不会阻止用户离开行编辑。在

但是,它确实提供了一个以编程方式拒绝输入的机会,因为每当当前值不可接受时,行编辑将不会发出它的editingFinished或{a3}信号,而它的hasAcceptableInput方法将返回False。此外,如果您子类化验证器,您可以重新实现它的fixup方法来控制输入的值。在

然而,正如已经建议的那样,一个更好/更简单的解决方案是使用QDoubleSpinBox,因为它会自动清理输入并提供更友好的界面。在

作为替代,您可以使用QDoubleSpinBox。在

  • 内置验证器
  • 防止键入时输入无效
  • 在setRange()中生成
  • 并添加了一个小句柄来改变更多面向鼠标的用户的值。在

可能你在期待一些不该发生的事情。
通常,当您有验证器时,您应该能够在中间状态键入不完全符合限制的内容。但当编辑失去焦点时,这个问题应该得到解决。在

为什么?假设您有84并且您希望将其更正为-8.4。很多人会这样做:加减号,所以现在你有了-84这是不可接受的,然后加上点。如果验证器立即修复这一点,这将是恼人的用户。在

所以底线是这样的“问题”发生在编辑失去焦点的时候吗?在

相关问题 更多 >