Содержание статьи
Сразу оговоримся, что приложение будет с рядом ограничений: в частности, мы не будем даже приступать к чтению почты и не сможем выбирать почтовый сервис для отправки. К тому же письма из самопального почтовика могут чаще попадать в спам. Воспринимай это скорее как учебный пример, который поможет тебе освоить полезные навыки.
Интерфейс
Для начала давай создадим интерфейс будущего приложения. Для этого воспользуемся фреймворком для разработки кросс‑платформенного ПО — Qt 5. Потребуется скачать его и установить.
Откроем Qt Designer и в появившемся окне выбора поставим галочку на пункте Main Window.
Затем создадим окно при помощи готовых инструментов, а именно Label для текста, Line Edit для строк ввода, Text Edit для поля ввода текста, а также Push Button для кнопок. Разложить всё можешь так, как тебе понравится, главное — поставить все элементы, показанные на картинке, и запомнить их номера. Дальше будет понятно, зачем это.
Не забудь в поле ввода пароля поставить параметр echoMode
, чтобы скрыть пароль, а также выключить поля, которые могут быть активны только после правильного ввода данных. Чтобы это сделать, необходимо в поле enabled
убрать галочку.
После завершения работы мое окно выглядит как на скриншоте.
Сохраняй документ, и получишь файл с расширением ui, который и будет файлом интерфейса. Я назвал его Main.
. Теперь к коду!
Первым делом импортируем две библиотеки. Они нужны для работы с Qt 5.
from PyQt5.QtWidgets import *from PyQt5 import uic
Теперь прописываем класс интерфейса и в нем все функции. У нас будет функция ввода (login
), функция прикрепления файла (attach_sth
) и функция отправки сообщений (send_mail
). Также в основе основ лежит функция вызова графического интерфейса с демонстрацией окна и активацией трех кнопок.
class MyGUI(QMainWindow): def __init__(self): super(MyGUI, self).__init__() uic.loadUi('Main.ui', self) self.show() self.pushButton.clicked.connect(self.login) self.pushButton_2.clicked.connect(self.attach_sth) self.pushButton_3.clicked.connect(self.send_mail) def login(self): pass def attach_sth(self): pass def send_mail(self): passapp = QApplication([])windows = MyGUI()app.exec_()
Здесь интересна функция app.
. Она останавливает работу с терминалом, чтобы все взаимодействие с приложением шло только через графический интерфейс.
Код уже можно запустить! Ты увидишь окно с нарисованным тобой интерфейсом, но в нем пока что ничего не будет работать. Конечно, мы же еще не определили, как это должно происходить.
Пишем основную часть
Итак, задача — написать движок. Приступим.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»