- 1. Структура проекта
- 2. main .py
- 3. Итог
Доступны аналогичные статьи на Qt/С++ и Qt/QML
При разработке сетевых приложений может потребоваться создание формочки для ввода ip-адреса, но применение простого метода setInputMask(«000.000.000.000;_»); с данным аргументом для QLineEdit не обеспечивает должного результата, поскольку маска позволяет вводить значения 999, 657 и т.д., тогда как IP-адрес ограничивается число 255.
Одним из способов решения данной проблемы является применение Валидатора.
Подобный урок был реализован на Qt/C++, а теперь тоже самое реализуем на PyQt5/Python.
Структура проекта
Проект будет состоять только из одного файла:
- main .py
main .py
- from PyQt5 import QtWidgets
- from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget, QLineEdit
- from PyQt5.QtCore import QSize, QRegExp
- from PyQt5.QtGui import QRegExpValidator
- # Наследуемся от QMainWindow
- class MainWindow(QMainWindow):
- # Переопределяем конструктор класса
- def __init__(self):
- # Обязательно нужно вызвать метод супер класса
- QMainWindow.__init__(self)
- self.setMinimumSize(QSize(480, 80)) # Устанавливаем размеры
- self.setWindowTitle("Line Edit IP Address") # Устанавливаем заголовок окна
- central_widget = QWidget(self) # Создаём центральный виджет
- self.setCentralWidget(central_widget) # Устанавливаем центральный виджет
- grid_layout = QGridLayout(self) # Создаём QGridLayout
- central_widget.setLayout(grid_layout) # Устанавливаем данное размещение в центральный виджет
- grid_layout.addWidget(QLabel("Введите IP-адрес", self), 0, 0)
- ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])" # Часть регулярного выржение
- # Само регулярное выражение
- ipRegex = QRegExp("^" + ipRange + "\\." + ipRange + "\\." + ipRange + "\\." + ipRange + "$")
- ipValidator = QRegExpValidator(ipRegex, self) # Валидатор для QLineEdit
- lineEdit = QLineEdit()
- lineEdit.setValidator(ipValidator) # Устанавливаем валидатор
- grid_layout.addWidget(lineEdit, 0, 1)
- if __name__ == "__main__":
- import sys
- app = QtWidgets.QApplication(sys.argv)
- mw = MainWindow()
- mw.show()
- sys.exit(app.exec())
Итог
В результате будет получено следующее окно с возможностью валидации IP-адреса.