python - PyQt QLineEdit 与 QValidator

标签 python qt qlineedit pyqt5

我的项目中有一个 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,但我希望用户只能输入范围内的数字。

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

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

最佳答案

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

但是,它确实让您有机会以编程方式拒绝输入,因为只要当前值 Not Acceptable ,行编辑就不会发出其 editingFinished。或 returnPressed信号及其 hasAcceptableInput方法将返回 False。此外,如果将验证器子类化,则可以重新实现它的 fixup方法来控制输入的值。

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

关于python - PyQt QLineEdit 与 QValidator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22407883/

相关文章:

c++ - 打开另一个表单,然后等待该表单返回响应

qt - 如何将不透明蒙版应用于 QML 项目?

c++ - 更改 QLineEdit 的 x 和 y 位置

c++ - 如何在QLineEdit的开头设置修复字符串?

python - 将属性添加到 Django 模型元类中

python - 逐行打印字典的元素

python - 从 Angular 2 前端调用后端 python 脚本

python - 具有梯度下降的直方图相交核的SVM

qt - 如何在 QListWidget 中设置所选项目?

c++ - Qt:自定义LineEditDelegate的Paint函数