• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Как создать графический интерфейс приложению + как скомпилировать его в .exe

Добрый день, сегодня мы с Вами научимся делать графический интерфейс приложениям в Python и компилировать их в .exe файл. Наверное, многих новичков уже достали консольные приложения, ведь их сложно показать другу и выглядеть будет не так эффектно. Сегодняшнюю статью я разбил на две части, а именно:
Код:
1. Создание графического интерфейса приложения.
2. Компиляция приложения на Python в .exe файл.
И так, без долгих предисловий приступим.

Глава 1. Графический интерфейс:

Для создания интерфейса мы будем использовать всеми нами любимый pyside и его QT designer. Для этого нам потребуется:
Код:
1. Python v3.4 и ниже.
2. Прямые руки ( желательно ).
Если у Вас установлен Python выше 3.4 , то переустановите его , либо установите вместе с существующим.
И так, заходим в консоль и первым делом проверяем, что у нас установлена нужная версия Python. Далее нам необходимо установить библиотеку pyside. Делается это простой командой.
Код:
pip install pyside
30522


Далее переходим в директорию, где установлен сам Python, у меня это C:\Python34
Теперь нужно найти папку 'Lib'. Не перепутайте с папкой 'libs'.

30523


Мы видим много файлов, но из них нам нужна папка 'site-packages'

30524


Переходим в неё и открываем папку 'PySide'.

30525


Так, вот мы и добрались до нашего любимого qt designer. Находим файл designer.exe. Что бы в дальнейшем легко открывать приложение, можем его 'отправить' на рабочий стол.

30526


Далее мы запускаем его. Как только мы зашли, открывается форма, в которой мы можем выбрать тип будущего приложения, я выберу Main Window

30555


После того, как мы выбрали тип, слева увидим таблицу с виджетами, а справа характеристики. Например, создам какую-нибудь форму. Справа в хар-ках, выбрав объект , мы можем увидеть колонку 'StyleSheets'. Открываем её, здесь с помощью CSS задаются стили объекта, например красный фон.

30556


Допустим, вы набросали своё приложение, сохраняем его. Расширение обязательно должно быть .ui ! Ну вот, мы сделали это, а как добавить какие-то функции? Легко. Открываем консоль, с помощью команды
Код:
cd путь к файлу
открываем директорию с файлом. Зачем? Если мы откроем этот файл, то увидим какую то разметку на xml, с ней ничего не сделать на python. Но мы этот файл переформатируем. Далее, вводим команду:
Код:
pyside uic "путь к файлу, включая его имя и расширение" -x -o "Путь к новому файлу, включая имя и расширение .py"
30558


Нажимаем Enter и вуаля. Переходим в директорию и открываем файл, который был создан. Оттуда нам нужны только последние строки, копируем их.

30559


У вас может быть немного по другому, если вы в начале выбрали не Main Window. Рядом с этим файлом создаём новый , в нём будет вся суть нашего приложения. Я его назову "script.py". Далее импортируем QtCore , QtGui из Pyside, класс ui из файла с интерфейсом из того, что мы скопировали , вырезаем строчку 'import sys' и вставляем её в начало. Выглядеть это должно так:
Код:
from PySide import QtCore, QtGui
from ui import Ui_Form
import sys
Строку ''if __name__ == "__main__":' мы удаляем, она нам больше не понадобится. Теперь, между последней и предпоследней строкой мы можем писать логику приложения.

30560


Я немного подкорректировал и вот, что должно получиться.
Код:
from PySide import QtCore, QtGui
from ui import Ui_Form
import sys

app = QtGui.QApplication(sys.argv)

MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()

# your code
  
sys.exit(app.exec_())

Глава 2. Компиляция файла .py в .exe

Не волнуйтесь, эта глава будет намного проще :).
Вы сделали программу с интерфейсом, но отправлять её другу, так он ещё и должен будет устанавливать все библиотеки? Нет, можно поступить намного проще! Сейчас я расскажу, как.
В папке я создал файл calc.py , в него разместил небольшой калькулятор и рядом разместил иконку калькулятора. Конечно можно и без иконки ( я покажу как ) , но это будет не так эффектно :).

30561

Для операция нам понадобится библиотека pyinstaller. Запускаем консоль и вводим команду:
Код:
pip install pyinstaller
Далее переходим в директорию с нашей программой, для этого используем всё ту же команду cd.
Код:
cd 'путь к директории файла'
Далее в консоли вводим команду
Код:
pyinstaller 'имя вашего файла'
Рядом с программой появилось несколько папок ( если файл .py полностью пустой, то ничего не будет ) . Из них нам нужна папка dist, там и находится наш .exe файл.

30562


Теперь, даже если Вы в программе подключали какие-либо библиотеки, её можно запустить на любом компьютере, не устанавливая ничего. Но можно скомпилировать и без лишних файлов, это просто. В консоли вводим команду
Код:
pyinstaller -F 'имя вашего файла'
Теперь всё скомпилируется в единый файл в папке dist. А как же задействовать иконку? Добавляем флаг -i. Тоесть вот так:
Код:
pyinstaller -i 'путь к иконке' 'имя вашего файла'
Так же снова можно добавить флак -F , что бы всё было приятно и красиво, в итоге команда получается такая:
Код:
pyinstaller -F -i 'путь к иконке' 'имя вашего файла'
Путь к иконке прописывать в " , а к файлу без " !!!
Если у Вас остались какие-то вопросы или появились ошибки, то прошу в комментарии. Спасибо за то, что дочитали до конца.
Всех благ :D
 

Amaterasu

New member
21.07.2018
1
0
BIT
0
Как размер ехе уменьшить? А то он весит больше 5мб, а в коде всего то обычный принт
 
S

syswars

как преобразовать код программы на python в шестнадцатиричный код ?
 
P

P0j1Ra7eL_M1R0v

а как господин автор допер до того, что в команде к одним параметрам нужны двойные ковычки, а к другим нет?
 
  • Нравится
Реакции: RinGinO

Your 2B wify

Green Team
01.06.2018
96
21
BIT
0
По моему НЕ экспертному мнению, нет смысла использовать PyQt ЕСЛИ нет задачи работы с стилями. Новичкам лучше использовать Tkinter. Он проще, идет из коробки. Плюс pyinstaller не подойдет для некоторых проектов(тк будет сыпать ошибками и багать как чёрт(на моём опыте есть не один опыт с pyinstaller)), а сборка с Qt через cx_Freeze весит не менее 200мб(если не заниматься махинациями по очистке не нужных в проекте либ).
 
Последнее редактирование:
  • Нравится
Реакции: Ванек и explorer
S

shulgaserj-II

По моему мнению - это приделывания к козе баян!
Не проще ли сразу писать Qt?
 
S

shulgaserj

По моему мнению - это приделывания к козе баян!
Не проще ли сразу писать на Qt?
Получается проще и быстрее!
 
N

NexuS

Так же полезен ключ -w, что бы скрыть консольный выхлоп:
pyinstaller -w -F -i 'путь к иконке' 'имя вашего файла'
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!