На этом шаге мы рассмотрим реализацию такого контроля.
Контролировать ввод данных позволяет метод setValidator(<QValidator>). В качестве параметра указывается экземпляр класса, наследующего класс QValidator из модуля QtGui. Существуют следующие стандартные классы, позволяющие контролировать ввод данных:
QIntValidator([parent=None]) QIntValidator(<Минимальное значение>, <Максимальное значение> [, parent=None])
Пример ограничения ввода диапазоном целых чисел от 0 до 100:
lineEdit.setValidator(QtGui.QIntValidator(0, 100, parent=window))
QDoubleValidator([parent=None]) QDoubleValidator(<Минимальное значение>, <Максимальное значение>, <Количество цифр после точки>[, parent=None])
Пример ограничения ввода диапазоном вещественных чисел от 0.0 до 100.0. и двумя цифрами после десятичной точки:
lineEdit.setValidator(QtGui.QDoubleValidator(0.0, 100.0, 2, parent=window))
Чтобы позволить вводить числа в экспоненциальной форме, необходимо передать значение атрибута ScientificNotation в метод setNotation(). Если передать значение атрибута StandardNotation, будет разрешено вводить числа только в десятичной форме. Пример:
validator = QtGui.QDoubleValidator(0.0, 100.0, 2, parent=window) validator.setNotation(QtGui.QDoubleValidator.StandardNotation) lineEdit.setValidator(validator)
QRegExpValidator([parent=None]) QRegExpValidator(<QRegExp>[, parent=None])
Пример ввода только цифр от 0 до 9:
validator = QtGui.QRegExpValidator(QtCore.QRegExp("[0-9]+"), parent=window)
lineEdit.setValidator(validator)
Обратите внимание, что здесь производится проверка полного соответствия шаблону, поэтому символы ^ и $ явным образом указывать не нужно.
Проверить соответствие введенных данных условию позволяет метод hasAcceptableInput(). Если данные соответствуют условию, то метод возвращает значение True, а в противном случае - False.
Со следующего шага мы начнем рассматривать многострочное текстовое поле.