|
|||||||
Время создания: 29.07.2019 23:51
Раздел: !Закладки - Python - IDE - Qt
Запись: xintrea/mytetra_db_adgaver_new/master/base/1533763427ije5ev64zk/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Как написать программу на PyQT PyQT - это набор библиотек, позволяющий писать оконные приложения под windows и linux на Python. Чтобы начать писать программы на PyQT вам нужно сперва установить PyQT.Для установки в Python 3.6 достаточно в командной строке дать командуpip3 install pyqt5После установки PyQT в Windows в меню Пуск появится папка с его утилитами. Нам интересна утилита Designer которая позволяет создавать элементы оконного интерфейса с помощью простого перетаскивания их на форму приложения. Писать мы будем программу для проверки доменов на занятость. Мы уже писали такую программу в консольном варианте вот в этой статье. Пришло время написать такую же программу с оконным интерфейсом.Установим модуль для проверки доменовpip3 install python-whoisОткроем из меню Пуск Designer и увидим такое окно Ничего не меняя в настройках просто нажмем кнопку Создать - тем самым создадим главное окно нашей программы. Слева есть список компонентов которые мы можем добавлять на форму простым перетаскиванием. У каждого добавленного на форму компонента есть свойства которые отображаются в списке справа, если добавить компонент на форму и выделить его.Накидаем интерфейс нашей программы для проверки доменов - в ней будут два многострочных текстовых поля (элемент TextEdit), две поясняющие надписи (Label) и одна кнопка (PushButton). Слева у нас должнен быть компонент с именем textEdit а справа textEdit_2. Выделив главное окно поменяем ему заголовок в меню свойств справа - свойство WindowTitle.Изменим надписи на кнопках и Label просто щелкнув двойным щелчком по ним и вписав текст. Изменим размеры компонентов так как нам нужно. Сохраним файл как check.ui в папку с нашим будущим проектом Теперь нам нужно конвертировать файл в модуль Python. Для этого в Windows в папке с проектом создаем .bat файл в котором пишем следующую строку После запуска данного .bat файла в папке с проектом появляется файл check.py который является готовым модулем Python. Подключив данный модуль к любой нашей программе мы получим оконный интерфейс с теми элементами которые мы заранее туда добавили.Теперь нам нужно создать основную программу - для этого используем вот такой шаблон 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_()) Сохраним файл программы в папке с проектом и запустив увидим наше окно. Пока еще ничего не работает так как функция которая срабатывает при нажатии кнопки у нас пустая (с заглушкой 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_()) Прочитав комментарии в коде вы поймете каждую команду.Скачать исходники Протестируем данную программу: Если у вас есть Android телефон, вы можете скачать наш учебник по Python |
|||||||
![]() |
|||||||
|
|||||||
|