Как написать программу на PyQT

Как написать программу на PyQT

PyQT - это набор библиотек, позволяющий писать оконные приложения под windows и linux на Python. Чтобы начать писать программы на PyQT вам нужно сперва установить PyQT. Для установки в Python 3.6 достаточно в командной строке дать команду pip3 install pyqt5 После установки PyQT в Windows в меню Пуск появится папка с его утилитами. Нам интересна утилита Designer которая позволяет создавать элементы оконного интерфейса с помощью простого перетаскивания их на форму приложения. PyQT designer Писать мы будем программу для проверки доменов на занятость. Мы уже писали такую программу в консольном варианте вот в этой статье. Пришло время написать такую же программу с оконным интерфейсом. Установим модуль для проверки доменов pip3 install python-whois Откроем из меню Пуск Designer и увидим такое окно PyQT Ничего не меняя в настройках просто нажмем кнопку Создать - тем самым создадим главное окно нашей программы. Как работать с PyQT Слева есть список компонентов которые мы можем добавлять на форму простым перетаскиванием. У каждого добавленного на форму компонента есть свойства которые отображаются в списке справа, если добавить компонент на форму и выделить его. Накидаем интерфейс нашей программы для проверки доменов - в ней будут два многострочных текстовых поля (элемент TextEdit), две поясняющие надписи (Label) и одна кнопка (PushButton). Слева у нас должнен быть компонент с именем textEdit а справа textEdit_2. Интерфейс программы на PyQT Выделив главное окно поменяем ему заголовок в меню свойств справа - свойство WindowTitle. Изменим надписи на кнопках и Label просто щелкнув двойным щелчком по ним и вписав текст. Изменим размеры компонентов так как нам нужно. Сохраним файл как check.ui в папку с нашим будущим проектом Сохраняем проект Теперь нам нужно конвертировать файл в модуль Python. Для этого в Windows в папке с проектом создаем .bat файл в котором пишем следующую строку Конвертируем UI После запуска данного .bat файла в папке с проектом появляется файл check.py который является готовым модулем Python. PyQT Подключив данный модуль к любой нашей программе мы получим оконный интерфейс с теми элементами которые мы заранее туда добавили. Теперь нам нужно создать основную программу - для этого используем вот такой шаблон

import sys
# Импортируем наш интерфейс
from check import *
from PyQt5 import QtCore, QtGui, QtWidgets

class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Здесь прописываем событие нажатия на кнопку                     
        self.ui.pushButton.clicked.connect(self.DomainCheck)

    # Пока пустая функция которая выполняется
    # при нажатии на кнопку                  
    def DomainCheck(self):
        pass

if __name__=="__main__":
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_())
Сохраним файл программы в папке с проектом и запустив увидим наше окно. окно программы на PyQT Пока еще ничего не работает так как функция которая срабатывает при нажатии кнопки у нас пустая (с заглушкой pass - это команда которая ничего не делает и служит для временной замены того что будет там вскоре) Напишем же нашу функцию, которая будет брать список доменов из левого текстового поля, проверять свободны ли они, и добавлять список свободных доменов в правом поле нашего окна.
import sys
from check import *
from PyQt5 import QtCore, QtGui, QtWidgets

# Импортируем модули нужные для проверки доменов
import whois
import re

class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Этой строчкой мы вешаем на кнопку нашу новую функцию
        # под названием DomainCheck
        self.ui.pushButton.clicked.connect(self.DomainCheck)

    # Собственно описываем функцию DomainCheck
    # которая вызывается при нажатии кнопки
    def DomainCheck(self):
        # Очищаем текстовое поле с результатами
        self.ui.textEdit_2.setText("")
        # В переменную stroki получаем текст из левого поля ввода
        stroki=self.ui.textEdit.toPlainText()
        # Получаем массив строк разделив текст по знаку переноса строки
        mas=stroki.split('\n')
        # Обнуляем переменную где будут копиться свободные домены
        rezultat='';
        # Выводим надпись чтобы пользователь подождал
        self.ui.textEdit_2.setText("Пожалуйста ждите, идет проверка!")
        # Перебираем массив строчек с названиями доменов
        for stroka in mas:
            # В переменную domain кладем очищенное от лишних символов имя домена
            domain = re.sub("^\s+|\n|\r|\s+$", '', stroka)
            # Проверяем свободно ли данное доменное имя
            m = whois.whois(domain)
            # Если свободно то добавляем его в rezultat
            if(m.status==None):
                rezultat=rezultat+domain+'\n'
        # Выводим в правое поле переменную rezultat со списком свободных доменов
        self.ui.textEdit_2.setText(rezultat)

if __name__=="__main__":
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_())
Прочитав комментарии в коде вы поймете каждую команду. Скачать исходники Протестируем данную программу: PyQT первая программа

Как написать программу на PyQT Лого Pythono.ru Как написать программу на PyQT