Python 使用QValidator的PyQt QLineEdit
我的项目中有一个QLineEdit。 我想在lineEdit上使用QValidationPython 使用QValidator的PyQt QLineEdit,python,qt,qlineedit,pyqt5,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.setV
#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,但我希望,该用户只能输入范围内的数字
我应该如何使用范围?
我需要帮助:)
谢谢你们的帮助,伙计们 作为替代,您可以使用
- 具有内置的验证程序
- 防止键入时输入无效
- 具有内置的setRange()
- 并添加了一个小句柄来更改更多面向鼠标的用户的值
- 具有内置的验证程序
- 防止键入时输入无效
- 具有内置的setRange()
- 并添加了一个小句柄来更改更多面向鼠标的用户的值
- 作为替代,您可以使用
- 也许你在期待一些不应该发生的事情。
一般来说,当您有验证器时,您应该能够在中间状态中键入不完全满足限制的内容。但当编辑器失去焦点时,这应该是固定的 为什么??假设您有一个
84
文件,您希望将其更正为-8.4
。很多人会这样做:加负号,所以现在你有-84
,这是不可接受的,然后加点。若验证器立即修复这个问题,那个么对用户来说会很烦人
所以,当编辑器失去焦点时,这个“问题”到底会发生吗?也许你在期待一些不应该发生的事情。
一般来说,当您有验证器时,您应该能够在中间状态中键入不完全满足限制的内容。但当编辑器失去焦点时,这应该是固定的 为什么??假设您有一个
84
文件,您希望将其更正为-8.4
。很多人会这样做:加负号,所以现在你有-84
,这是不可接受的,然后加点。若验证器立即修复这个问题,那个么对用户来说会很烦人
所以底线是,当编辑器失去焦点时,这个“问题”会发生吗?默认情况下,验证器不会阻止输入范围之外的值,如果输入的值为,它也不会阻止用户离开编辑行 但是,它确实为您提供了以编程方式拒绝输入的机会,因为只要当前值不可接受,行编辑就不会发出or信号,其方法将返回
False
。此外,如果您对验证器进行子类化,则可以重新实现其方法以控制输入的值
但是,正如已经提出的,更好/更简单的解决方案是使用
QDoubleSpinBox
,因为它会自动清理输入并提供更友好的界面。默认情况下,验证器不会阻止输入超出范围的值,如果输入的值为,则不会阻止用户离开行编辑
但是,它确实为您提供了以编程方式拒绝输入的机会,因为只要当前值不可接受,行编辑就不会发出or信号,其方法将返回False
。此外,如果您对验证器进行子类化,则可以重新实现其方法以控制输入的值
但是,正如已经提出的,更好/更简单的解决方案是使用
QDoubleSpinBox
,因为它会自动清理输入并提供更友好的界面。是的,当编辑器失去焦点时会发生此问题。我正在键入250,并在编辑器中单击not,在lineEdit中单击not,但没有发生任何事情这很奇怪,应该可以工作。我看不出你的代码有任何问题。你能告诉我更多关于这件事的信息吗:我们键入100500,这没关系,但你认为如果我们点击窗口的另一部分或松开焦点,验证会起作用,但是如何进行呢?我们已经输入了数字!我不明白它是如何修复的。是的,当编辑器失去焦点时,这个问题就会发生。我正在键入250,并在编辑器中单击not,在lineEdit中单击not,但没有发生任何事情这很奇怪,应该可以工作。我看不出你的代码有任何问题。你能告诉我更多关于这件事的信息吗:我们键入100500,这没关系,但你认为如果我们点击窗口的另一部分或松开焦点,验证会起作用,但是如何进行呢?我们已经输入了数字!我不明白它是怎么修好的。。