Evgenii Legotckoi
12 листопада 2016 р. 18:39

PyQt5 - Урок 001. QLineEdit IP-адреса

Доступні аналогічні статті на Qt/C++ та Qt/QML

При розробці мережевих додатків може знадобитися створення форми для введення ip-адреси, але застосування простого методу setInputMask(«000.000.000.000;_»); з даним аргументом для QLineEdit не забезпечує належного результату, оскільки маска дозволяє вводити значення 999, 657 і т.д., тоді як IP-адреса обмежується число 255.

Одним із способів вирішення даної проблеми є застосування Валідатора.

Подібний урок був реалізований на Qt/C++, а тепер також реалізуємо на PyQt5/Python.


Структура проекта

Проект складатиметься лише з одного файлу:

  1. 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-адреси.

Посилання на репозиторій із проектом

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up