1

我是 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()

4

0 回答 0