我是 PyQt5 的新手,并试图在 Python 和 PyQt5 中实现一些代码来验证 QLineEdit 字段的用户输入。
QIntValidator 'bottom' 整数值设置为 100,'top' 设置为 200。在字段中输入数据时,不能输入大于 200 的值,但可以输入小于 100 的值。我是否错过了一些步骤或误解了这个验证器的功能?这是我关于 stackoverflow 的第一个问题——希望我已经清楚地描述了这个问题。非常感谢任何帮助!
# Qt5_IntValidator.py
# Qt5 IntValidator testing
import sys
from PyQt5.Qt import QApplication
from PyQt5.QtCore import QRegExp
from PyQt5.QtGui import QRegExpValidator, QIntValidator
from PyQt5.QtWidgets import QWidget, QLineEdit
class MyWidget_IntValidator(QWidget):
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
self.le_input = QLineEdit(self)
self.le_input.setMaxLength(4)
self.input_validator = QIntValidator(self.le_input)
#self.input_validator = QIntValidator(100, 200, self.le_input)
self.input_validator.setRange(100, 200)
#self.input_validator.setBottom(100)
#self.input_validator.setTop(200)
print(f"Bottom: {QIntValidator.bottom(self.input_validator)}")
print(f"Top: {QIntValidator.top(self.input_validator)}\n")
self.le_input.setValidator(self.input_validator)
self.le_input.textChanged[str].connect(self.le_textChanged)
def le_textChanged(self, text):
self.input_text = text
text_status = QIntValidator.validate(self.input_validator, self.input_text, 0)
print(f"Status: {text_status}")
if text_status[0] == 2: # 2=Acceptable, 1=Intermediate, 0=Invalid.
print("Acceptable!")
elif text_status[0] == 1:
print("Intermediate..")
else:
print("Invalid:(")
if __name__ == '__main__':
a = QApplication(sys.argv)
w = MyWidget_IntValidator()
w.show()
a.exec()