Программы написанные на Python: игры и сайты — Примеры известных проектов

Всем привет. В этой статье я хочу рассказать о разработке программы с открытым исходным кодом для оффлайнового хранения заметок — OutWiker. Этим проектом я занимаюсь в свободное время, первая…

Что такое OutWiker

Когда-то я писал об этой программе на Хабре, но это было так давно, что прежде чем говорить об особенностях внутреннего устройства и процесса разработки, нужно сказать, что представляет собой программа с точки зрения пользователя. Все ссылки, связанные с проектом даны в конце статьи. Итак, OutWiker — это программа для хранения заметок в виде дерева, в англоязычном интернете такой софт обычно называют outliner (поэтому у программы такое название). Среди более известных «коллег» OutWiker с подобным функционалом можно назвать Zim, WikidPad, CherryTree, и множество других (ну и, разумеется, org mode для Emacs). Логичный вопрос с точки зрения пользователя — чем OutWiker отличается от других представителей древовидных записных книжек. На данный момент, по прошествии такого количества времени с момента начала разработки, я уже не готов развернуто сравнить весь этот софт. В стародавние времена я перепробовал десятки outliner-ов, штук пять использовал достаточно долгое время, но везде чего-то не хватало, хотелось одну возможность взять из WikidPad, другую — из викидвижка, который может работать оффлайново и т.д. Поэтому в качестве ответа на такой вопрос просто перечислю основные особенности, которыми обладает OutWiker.

ymimofpxwkjsyoacsh9gf71c2uk.png

  1. Все заметки хранятся в виде папок на диске. Это сделано по двум причинам — для надежности, чтобы, например, при постепенном умирании харда все заметки не отправились на тот свет вместе с одним файлом. И, кроме того, это позволяет просматривать и редактировать заметки без OutWiker. Разумеется, в таком способе хранения есть свои недостатки, но ничего не дается просто так.
  2. К каждой заметке можно прикреплять произвольное количество файлов (на самом деле и папок, но эта возможность не особо афишируется). Одно из назначений прикрепленных файлов (в основном картинок) — это использование их в тексте заметок. Таким образом, изменяя прикрепленную картинку, мы сразу видим новую картинку в тексте страницы.
  3. У OutWiker нет визуального редактора (я думаю, что он когда-нибудь появится, но пока руки до него не доходят), но есть несколько типов страниц — HTML-страницы, викистраницы и Markdown-страницы (после установки соответствующего плагина). В OutWiker упор сделан на викистраницы. Викинотация напоминает pmWiki (не очень распространенный движок для сайтов), но с некоторыми отличиями, об особенностях викинотации и ее реализации я скажу ниже.
  4. Как вы уже поняли по предыдущему пункту, программа умеет работать с плагинами, которых на данный момент больше 20. Например, с помощью плагинов для викистраниц можно добавить раскраску кода для разных языков программирования, поддержку формул в формате LaTeX, возможность вставки разных счетчиков (например, номеров рисунков), графики и диаграммы по данным, можно добавить шаблоны для часто вводимых фраз, создавать страницы, скачивая их из интернета и многое другое.
  5. Каждая заметка может быть помечена произвольным количеством тегов. Облако тегов показывается сбоку в окне программы.
  6. Программа кроссплатформенная, есть сборки под Windows и Linux (с Mac OS X у меня пока дела не складываются).
  7. Исходный код открыт и распространяется по лицензии GPL 3.

edqoiezve0-mrwhfsxwvel0kw0y.png

zvxa3ueyc8m7rqa3bq5osvcb00o.png

Требования

  1. Вы должны знать основы Python
  2. Вы должны знать, как устанавливать пакеты и библиотеки с помощью pip.
  3. У вас должен быть установлен Python.

Введение в GUI

GUI (Graphical user interface) — графический интерфейс пользователя. С этого понятия мы и начнем. На самом деле никаких скрытых смыслов здесь нет и GUI — это графическое представление для всех ваших программ.

То есть вы могли бы запустить программу из командной строки и получить результат в том же самом виде. Но чтобы ваш код взаимодействовал с пользователем, необходим интерфейс для взаимодействия.

В «питоне» есть много модулей, которые вы можете импортировать и на его основе создавать свой графический интерфейс. Мы будем использовать Tkinter — встроенный GUI  для Python. Он устанавливается вместе «питоном».

Кроме того, вы также можете попробовать PyQT, Kivy (лучше всего подходит для кроссплатформенности, при создании ПО под apk, exe или MAC). Официальный сайт — kivy.org.

В этом уроке я собираюсь использовать Tkinter. Удобная вещь в Python состоит в том, что вы можете импортировать другие файлы в свой файл. Точно также нужно импортировать Tkinter, аналогично #include в C.

from Tkinter import *import Tkinterimport tkMessageBoxtop = Tk()L1 = Label(top, text=»HI»)L1.pack( side = LEFT)E1 = Entry(top, bd =5)E1.pack(side = RIGHT)B=Button(top, text =»Hello»,)B.pack()top.mainloop()

Здесь Tk() относится к классу в модуле Tkinter, который мы сохраняем, инициализируя в top. Label — это метод для печати текста, Entry — для создания пустой записи, Button — для создания кнопки.

pack — это ключ для упаковки всего в макет. mainloop сохраняет все видимым, пока вы не закроете графический интерфейс.

Где применяется Python

Python используется в разных областях программирования не просто так. Он прост в изучении, имеет приятный синтаксис и обладает достаточным для решения любых задач набором инструментов.

И хотя он не может потеснить Java и PHP с ведущих мест в веб-разработке, в сфере машинного обучения Python – язык номер один.

Создание приложений

Python можно использовать для разработки десктопных и мобильных приложений, для этого разработано много мощных инструментов. Однако крупные проекты зачастую не пишут только на одном Python полностью.

Python часто используется для разработки отдельных частей приложения, он позволяет создать простую систему моддинга. Благодаря высокой степени модульности, изменение одной части программы может не затрагивать другую.

Возможность встроить в Python код на С/C++ сглаживает проблему низкой скорости работы программ.

Можно и полностью разрабатывать полноценные приложения для мобильных устройств, используя фреймворки, например, Kivi.

Веб-разработка

Python захватил определенную часть сферы, но не может соперничать с такими гигантами, как PHP, Java и Node.js. Для реализации серверной логики они удобнее и мощнее Python.

На Python часто создаются решения, которые имеют узкую направленность. Например, отправку документа с сайта на принтер трудно реализовать на PHP, а Python легко справляется с этой задачей.

Python проигрывает, потому что он является языком общего назначения, PHP – это инструмент, заточенный только под веб-программирование, а Java уже давно используется в вебе.

Машинное обучение

Искусственный интеллект с каждым годом становится лучше, ученые одержимы идеей создать суперкомпьютер, превосходящий человека во всем.

Python стал абсолютным лидером в этой сфере по ряду причин:

  • Язык очень простой, это нравится ученым. Им не нужно тратить много времени на написание кода, вместо этого они могут сосредоточиться на проектировании ИИ.
  • В Python легко встраивается код на C и C++, что позволяет использовать C-код в тех местах, где важна скорость.
  • Python обзавелся достаточным количеством библиотек и фреймворков, созданных для упрощения машинного обучения.
  • Гибкость языка позволяет не ограничиваться какой-то одной парадигмой разработки, программист может писать как объектно-ориентированные программы, так и процедурные.

Выбор проектной платформы

Вам нужно создать такое ПО, которое бы облегчало людям, не имеющим определённых технических знаний, работу на платформе. Веб, десктоп и командная строка — три основные платформы, для которых вы можете создать свои проекты.

Веб

Веб-приложения — это приложения, которые работают в интернете, к ним можно получить доступ на любом устройстве без загрузки приложения на само устройство, если есть доступ к интернету. Веб-приложение состоит из бэкенда (серверной части) и фронтенда (пользовательского интерфейса). Для Python-разработчиков основное поле деятельности — бэкенд. Однако визуальная составляющая тоже важна, поэтому вам понадобятся некоторые знания HTML, CSS и, возможно, JavaScript. Чтобы создать простой интерфейс, основы будет достаточно.

Другой вариант — использовать Python как для фронтенда, так и для бэкенда с помощью библиотеки anvil. Вы можете создавать веб-приложения с помощью Python через такие веб-фреймворки как Django и Flask. Список фреймворков для создания веб-приложений на Python очень длинный, но Django и Flask остаются самыми популярными из них.

Десктоп

Существуют специальные библиотеки для создания десктопных приложений. Одна из них — PySimpleGUI, она хорошо подходит для разработчика среднего уровня. PyQt5  более мощная, но может оказаться слишком сложной в обучении.

Программное обеспечение, которое вы разрабатываете, может работать на любой операционной системе, будь то Windows, Linux или Mac. Всё, что нужно сделать после создания проекта, — это скомпилировать его в исполняемый файл для выбранной операционной системы.

Командная строка

Приложения командной строки — это те приложения, которые работают в окне консоли. В Windows в роли консоли выступает сама командная строка, а в Linux и Mac это терминал.

При работе с привычными вам приложениями вы щёлкаете по разным иконкам, набираете текст и т. п., но при работе с командой строкой вы вводите специальные команды, так что вам нужно владеть некоторыми техническими знаниями.

Приложения для командной строки могут быть не такими красивыми или простыми в использовании, как десктопные или веб-приложения, но это не делает их менее мощными. Можно улучшать внешний вид таких приложений, применяя цвета к тексту. Есть библиотеки, которые помогут вам с этим: Colorama и Colored. Фреймворки Docopt, Argarse и Click упростят вам процесс создания приложений.

Идеи приложений

Какие редакторы и IDE можно считать подходящими для разработки на Python?

Интегрированная среда разработки (Integrated Development Environment (IDE)) — программное обеспечение с очень обширным набором инструментов, использующихся для написания и тестирования кода. У каждой IDE свой арсенал самых полезных инструментов, но среди них обязательно будет текстовый редактор для написания кода, встроенные инструменты для автоматической компиляции и отладчик для обнаружения возможных ошибок.

Специализированные IDE могут содержать и более продвинутые инструменты, например, интеграции систем искусственного интеллекта.

Редакторы кода — это легковесные альтернативы IDE. В них есть текстовый редактор с автоматической подсветкой синтаксиса и простой отладчик для поиска багов, но нет сложных инструментов, которые можно найти в IDE.

Установка

Вам нужно установить только PyQt. Откройте терминал и введите команду:

>>> pip install PyQt5

Мы будем использовать PyQt версии 5.15. Дождитесь окончания установки, это займёт пару минут.

Шаг 1 — Разбираем Flask

Flask — это микрофреймворк для веб-разработки. “Микро” означает, что он очень простой. С ним не идет никаких заранее устанавливаемых внешних библиотек и инструментов. Обычно Flask используют с MongoDB, что позволяет лучше управлять базами данных и историей. Думаю, для введения достаточно. Ведь на самом деле нам интересно то, как он работает, верно? Давайте перейдем к этому. Но перед этим нам нужно разобраться с одним фундаментальным понятием, касающимся фреймворка Flask, маршрутизацией.

Маршруты это всего лишь особые пути. Давайте представим, что вы зашли на сайт apple.com и хотите перейти в раздел Mac на apple.com/mac/. Почему серверы Apple показывают вам именно страницу с подробностями об устройствах Mac? Вероятнее всего, потому что у них на сервере работает веб-приложение, которое распознает, что кто-то, находясь на apple.com, перешел в раздел сайта /mac/, обрабатывает этот запрос и отправляет пользователю некоторые страницы, чаще всего индексный файл в этом разделе.

Настройка Electron

Разработка на Electron–это, как ни странно, разработка на Node.js. Поскольку Node.js уже должен бытьустановлен в предыдущем пункте, переходите к настройке, иначе почитайте в официальномхелпе о начальной настройке для разных ОС.

Из директории проектазапустите команду:

npm install —save-dev electron

Процесс установки содержит различные вариации – изучите ихв специальномразделе.

Hello, World!

Создайте папку с проектом, мы назовём его helloApp. Откройте файл main.py, лучше сделать это vscode, и введите следующий код:

import sysfrom PyQt5.QtGui import QGuiApplicationfrom PyQt5.QtQml import QQmlApplicationEngineapp = QGuiApplication(sys.argv)engine = QQmlApplicationEngine()engine.quit.connect(app.quit)engine.load(‘./UI/main.qml’)sys.exit(app.exec())

Этот код вызывает QGuiApplication и QQmlApplicationEngine которые используют Qml вместо QtWidget в качестве UI слоя в Qt приложении. Затем, мы присоединяем UI функцию выхода к главной функции выхода приложения. Теперь они оба закроются одновременно, когда пользователь нажмёт выход. Затем, загружаем qml файл для Qml UI. Вызов app.exec(), запускает приложение, он находится внутри sys.exit, потому что возвращает код выхода, который передается в sys.exit.

Добавьте этот код в main.qml:

import QtQuick 2.15import QtQuick.Controls 2.15ApplicationWindow { visible: true width: 600 height: 500 title: «HelloApp» Text { anchors.centerIn: parent text: «Hello, World» font.pixelSize: 24 }}

Этот код создает окно, делает его видимым, с указанными размерами и заголовком. Объект Text отображается в середине окна.

Теперь давайте запустим приложение:

>>> python main.py

Вы увидите такое окно:

Настройка виртуальнойсреды Python

Чтобы проверить, что в вашей системе установлен Python 3, откройте терминал и выполните следующую команду:

$ python —versionPython 3.7.0

А теперь давайтесоздадим виртуальную среду.

Советы по работе над проектами

Работа над проектами — непростое дело, но мотивация и интерес к проекту превратят его создание в увлекательный процесс. Если вы заинтересованы в каком-либо проекте — потратьте время на исследования, а также поиски библиотек и инструментов, которые помогут вам а работе.

Вот примерный план работы над проектом:

  • Найдите источник мотивации.
  • Разбейте проект на подзадачи.
  • Проведите исследование.
  • Выполните по очереди каждую подзадачу.
  • Обратитесь за помощью, если вы застряли.
  • Соедините всё вместе.

Сборка приложения

Для сборки десктопного приложения на Python нам понадобится pyinstaller.

>>> pip install pyinstaller

Чтобы в сборку добавились все необходимые ресурсы, создадим файл spec:

>>> pyi-makespec main.py

Настройки файла spec

Параметр datas можно использовать для того, чтобы включить файл в приложение. Это список кортежей, каждый из которых обязательно должен иметь target path(откуда брать файлы) и destination path(где будет находится приложение).  destination path должен быть относительным. Чтобы расположить все ресурсы в одной папке с exe-файлами используйте пустую строку.

Измените параметр datas, на путь к вашей папке с UI:

a = Analysis([‘main.py’], … datas=[(‘I:/path/to/helloApp/UI’, ‘UI’)], hiddenimports=[],…exe = EXE(pyz, a.scripts, [], … name=’main’, debug=False, … console=False )coll = COLLECT(exe, … upx_exclude=[], name=’main’)

Параметр console установим в false, потому что у нас не консольное приложение.

Параметр name внутри вызова Exe, это имя исполняемого файла. name внутри вызова Collect, это имя папки в которой появится готовое приложение. Имена создаются на основании файла для которого мы создали spec — main.py.

Теперь можно запустить сборку:

>>> pyinstaller main.spec

В папке dist появится папка main. Для запуска программы достаточно запустить файл main.exe.

Так будет выглядеть содержимое папки с десктопным приложением на Python:

Содержимое папки с готовым приложением

О том, как использовать Qt Designer для создания UI приложений на Python читайте в нашей статье.

Оригинал How to build your first Desktop Application in Python

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: