Пишем приложение на python: Создание приложений Python для реальных задач — Training

Десктопное приложение на Python: UI и сигналы

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


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

Мы будем использовать PyQt (произносится «Пай-Кьют‎»‎). Это фреймворк Qt, портированный с C++. Qt известен тем, что необходим C++ разработчикам. С помощью этого фреймворка сделаны blender3d, Tableau, Telegram, Anaconda Navigator, Ipython, Jupyter Notebook, VirtualBox, VLC и другие. Мы будем использовать его вместо удручающего Tkinter.

Требования

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

Установка

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

>>> pip install PyQt5

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

Hello, World!

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

import sys

from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine

app = 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.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 600
    height: 500
    title: "HelloApp"

    Text {
        anchors.centerIn: parent
        text: "Hello, World"
        font.pixelSize: 24
    }

}

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

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

>>> python main.py

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


Обновление UI

Давайте немного обновим UI, добавим фоновое изображение и время:

import QtQuick 2.15
import QtQuick.
Controls 2.15 ApplicationWindow { visible: true width: 400 height: 600 title: "HelloApp" Rectangle { anchors.fill: parent Image { sourceSize.width: parent.width sourceSize.height: parent.height source: "./images/playas.jpg" fillMode: Image.PreserveAspectCrop } Rectangle { anchors.fill: parent color: "transparent" Text { text: "16:38:33" font.pixelSize: 24 color: "white" } } } }

Внутри типа ApplicationWindow находится содержимое окна, тип Rectangle заполняет пространство окна. Внутри него находится тип

Image и другой прозрачный Rectangle который отобразится поверх изображения.

Если сейчас запустить приложение, то текст появится в левом верхнем углу. Но нам нужен левый нижний угол, поэтому используем отступы:

Text {
                anchors {
                    bottom: parent.bottom
                    bottomMargin: 12
                    left: parent.left
                    leftMargin: 12
                }
                text: "16:38:33"
                font.pixelSize: 24
                ...
            }

После запуска вы увидите следующее:


Показываем текущее время

Модуль gmtime позволяет использовать структуру со временем, а strftime даёт возможность преобразовать её в строку. Импортируем их:

import sys
from time import strftime, gmtime

Теперь мы можем получить строку с текущим временем:

curr_time = strftime("%H:%M:%S", gmtime())

Строка "%H:%M:%S" означает, что мы получим время в 24 часовом формате, с часами минутами и секундами (подробнее о strtime).

Давайте создадим property в qml файле, для хранения времени. Мы назовём его currTime.

property string currTime: "00:00:00"

Теперь заменим текст нашей переменной:

Text {
    ...
    text: currTime  // used to be; text: "16:38:33"
    font.pixelSize: 48
    color: "white"
}

Теперь, передадим переменную curr_time из pyhton в qml:

engine.load('./UI/main.qml')
engine.rootObjects()[0].setProperty('currTime', curr_time)

Это один из способов передачи информации из Python в UI.

Запустите приложение и вы увидите текущее время.

Обновление времени

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

Чтобы использовать сигналы нам нужен подкласс QObject. Назовём его Backend.

...
from PyQt5.QtCore import QObject, pyqtSignal

class Backend(QObject):
    def __init__(self):
        QObject.__init__(self)
. ..

У нас уже имеется свойства для строки со временем curr_time, теперь создадим свойство backend типа QtObject в файле main.qml.

property string currTime: "00:00:00"
property QtObject backend

Передадим данные из Python в qml:

engine.load('./UI/main.qml')
back_end = Backend()
engine.rootObjects()[0].setProperty('backend', back_end)

В qml файле один объект QtObject может получать несколько функций (называемых сигналами) из Python.

Создадим тип Connections и укажем backend в его target. Теперь внутри этого типа может быть столько функций, сколько нам необходимо получить в backend.

...
Rectangle {
    anchors.fill: parent
    Image {
    ...
    }
    ...
}
Connections {
    target: backend
}
...

Таким образом мы свяжем qml и сигналы из Python.

Мы используем потоки, для того чтобы обеспечить своевременное обновление UI. Создадим две функции, одну для управления потоками, а вторую для выполнения действий. Хорошая практика использовать в названии одной из функций _.

...
import threading
from time import sleep
...
class Backend(QObject):

    def __init__(self):
        QObject.__init__(self)
    def bootUp(self):
        t_thread = threading.Thread(target=self._bootUp)
        t_thread.daemon = True
        t_thread.start()
    def _bootUp(self):
        while True:
            curr_time = strftime("%H:%M:%S", gmtime())
            print(curr_time)
            sleep(1)
...

Создадим pyqtsignal и назовём его updated, затем вызовем его из функции updater.

...
from PyQt5.QtCore import QObject, pyqtSignal
...
    def __init__(self):
        QObject.__init__(self)
    updated = pyqtSignal(str, arguments=['updater'])
    def updater(self, curr_time):
        self.updated.emit(curr_time)
    ...

В этом коде updated имеет параметр arguments, который является списком, содержащим имя функции «updater». Qml будет получать данные из этой функции. В функции updater мы вызываем метод emit и передаём ему данные о времени.

Обновим qml, получив сигнал, с помощью обработчика, название которого состоит из «on»  и имени сигнала:

    target: backend
    function onUpdated(msg) {
        currTime = msg;
    }

Теперь нам осталось вызвать функцию updater. В нашем небольшом приложении, использовать отдельную функцию для вызова сигнала не обязательно. Но это рекомендуется делать в больших программах. Изменим задержку на одну десятую секунды.

curr_time = strftime("%H:%M:%S", gmtime())
            self.updater(curr_time)
            sleep(0.1)

Функция bootUp должна быть вызвана сразу же после загрузки UI:

engine.rootObjects()[0].setProperty('backend', back_end)
back_end.bootUp()
sys.exit(app.exec())

Всё готово

Теперь можно запустить программу. Время будет обновляться корректно. Для того, чтобы убрать рамку, вы можете добавить в qml файл следующую строку:

flags: Qt.
FramelessWindowHint | Qt.Window

Так должен выглядеть файл main.py:

import sys
from time import strftime, gmtime
import threading
from time import sleep
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtCore import QObject, pyqtSignal

class Backend(QObject):

    def __init__(self):
        QObject.__init__(self)
    updated = pyqtSignal(str, arguments=['updater'])
    def updater(self, curr_time):
        self.updated.emit(curr_time)
    def bootUp(self):
        t_thread = threading.Thread(target=self._bootUp)
        t_thread.daemon = True
        t_thread.start()
    def _bootUp(self):
        while True:
            curr_time = strftime("%H:%M:%S", gmtime())
            self.updater(curr_time)
            sleep(0.1)

app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.
quit.connect(app.quit) engine.load('./UI/main.qml') back_end = Backend() engine.rootObjects()[0].setProperty('backend', back_end) back_end.bootUp() sys.exit(app.exec())

Вот содержимое файла main.qml:

import QtQuick 2.15
import QtQuick.Controls 2.15
ApplicationWindow {
    visible: true
    width: 360
    height: 600
    x: screen.desktopAvailableWidth - width - 12
    y: screen.desktopAvailableHeight - height - 48
    title: "HelloApp"
    flags: Qt.FramelessWindowHint | Qt.Window
    property string currTime: "00:00:00"
    property QtObject backend
    Rectangle {
        anchors.fill: parent
        Image {
            sourceSize.width: parent.width
            sourceSize.height: parent.height
            source: "./images/playas.jpg"
            fillMode: Image.PreserveAspectFit
        }
        Text {
            anchors {
                bottom: parent.
bottom bottomMargin: 12 left: parent.left leftMargin: 12 } text: currTime font.pixelSize: 48 color: "white" } } Connections { target: backend function onUpdated(msg) { currTime = msg; } } }

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

Для сборки десктопного приложения на 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

Создание мобильного приложения на Python

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

Что такое Python?

В первую очередь, Python — это объектно-ориентированный язык программирования высокого уровня, который еще несколько лет назад не был так успешен как сегодня. Дело в том, что с расширением библиотек и возможностей этого языка, он составил конкуренцию тем, кто считался лидерами, а также был признан самым быстроразвивающимся языком программирования. 

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

Благодаря универсальности этого языка, софт может создаваться под разные платформы (iOS, Android, Windows) и под любые устройства, к тому же с возможностью настраивать функционал приложения на всех платформах одновременно. 

Но это далеко не все преимущества этого языка программирования. Давайте присмотримся к ним подробнее. 

Почему вам следует использовать мобильную разработку на Python

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

Легко читаемый код

Если при словосочетании “программный код” у вас перед глазами возникает картинка с множеством строк с различными словами, символами, а главное — с множеством скобок и длительными описаниями — это не о Python. Этот язык программирования позволяет одним словом описать команду, которая, например в Java, должна быть расписана в пять строк. Неплохо, не правда ли? 

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

Быстрый ответ

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

Преимущества здесь очевидны: сокращение срока исправления ошибок, а значит и разработки в целом; экономия средств на погоне за багами; более быстрый запуск вашего продукта на рынок. 

Высокая совместимость

Мы уже упоминали, что возможна не только разработка мобильных приложений на Python, а и десктопных программ и веб-сайтов. А также, если говорить о приложениях, используя только один этот язык программирования, можно писать как нативные приложения для андроид и iOs, так и кроссплатформенные, которые будут корректно работать на обеих платформах. 

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

Разработка через тестирование

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

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

Библиотека высокого стандарта

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

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

Поддерживаются большие данные

Использование Big Data стало необходимостью в последнее время, компании все чаще анализируют информационные массивы для получения еще более высоких результатов. Python отлично справляется с этой задачей, а наличие соответствующих библиотек помогает ее упростить. Немного далее мы рассмотрим мобильные приложения на Python, которые используют эти возможности. 

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

Примеры мобильного приложения на Python

Если вы не знаете, можно ли ваше приложение разработать на каком-то языке программирования, или перечень плюсов звучит как нечто “слишком для программистов”, не проблема. Взгляните на реальные продукты, и вам сразу станет понятна основная часть возможностей языка с точки зрения пользователя.

Instagram

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

Pinterest

Это приложение, также созданное полностью на Python, в частности на одном из его фреймворков — Django. Также, как и у инстаграма, основная цель приложения — делиться фото и видео контентом. Но здесь этого контента еще больше, потому что это единственное предназначение соцсети, без возможности личной переписки, например. При этом есть функция сохранения любого контента себе на доску, выдача похожих на понравившиеся “пинов” и возможность не только загружать контент, но и делиться статьями или другими материалами с просторов сети. В Pinterest огромное внимание уделено работе с большими объемами данных, но и количество пользователей при этом существенно, ведь приложение пользуется популярностью во всем мире.

Spotify

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

Disqus

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

Dropbox

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

Uber

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

Reddit

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

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

Кросс-платформенные мобильные фреймворки для Python

С примерами приложений на Python разобрались, время снова возвращаться к технической части. Мы уже упоминали, что существует довольно значительное количество фреймворков на этом языке программирования. Но поскольку мы говорим о мобильной разработке, давайте поговорим конкретно о тех фреймворках, которые помогут вам создать приложение как для iOS, так и для Android, не прибегая к помощи  других языков. 

Kivy

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

BeeWare

В отличии от Kivy, этот фреймворк имеет в своем арсенале нативные инструменты для каждой платформы, так что опыт ваших пользователей ничем не будет отличаться от приложений написанных на Swift для iOs, или Java для Android. Конечно, это подразумевает и некоторые особенности разработки: вам придется прописывать и настраивать многие элементы отдельно для каждой платформы. Тем не менее, благодаря общему языку программирования, трудности возникают только с интерфейсной частью, остальной же функционал можно написать один раз для обеих платформ и использовать повторно. Тестировать, конечно, придется оба приложения отдельно.  

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

Выводы

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

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

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

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

Остались вопросы?

Оставьте ваши контактные данные. Наш менеджер свяжется и проконсультирует вас.

Как вам статья?

1 Star2 Stars3 Stars4 Stars5 StarsEmpty

Проголосовало: 11

приложений для Python | Python.org

Примечание: Хотя JavaScript не является обязательным для этого веб-сайта, ваше взаимодействие с содержимым будет ограничено. Пожалуйста, включите JavaScript для полного опыта.

Пожертвовать

Поиск по сайту

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

  • Список пакетов Python тысячи сторонних модулей для Python.

Python предлагает множество вариантов для веб-разработки:

  • Фреймворки, такие как Django и Pyramid.
  • Микрокаркасы, такие как Колба и Бутылка.
  • Передовые системы управления контентом, такие как Plone и django CMS.

Стандартная библиотека Python поддерживает множество интернет-протоколов:

  • HTML и XML
  • JSON
  • Обработка электронной почты.
  • Поддержка FTP, IMAP и другие интернет-протоколы.
  • Простой в использовании интерфейс сокета.

А в Package Index есть еще больше библиотек:

  • Запросы, мощный Библиотека HTTP-клиента.
  • Красивый суп, синтаксический анализатор HTML, который может обрабатывать все виды странного HTML.
  • Feedparser для разбора RSS/Atom-каналы.
  • Парамико, реализация протокол SSh3.
  • Twisted Python, фреймворк для асинхронное сетевое программирование.

Python широко используется в научных и числовых вычислениях:

  • SciPy — это набор пакетов для математики, науки и техники.
  • Pandas — это анализ данных и библиотека моделирования.
  • IPython — это мощная интерактивная оболочка, которая имеет удобное редактирование и запись рабочего сеанса, а также поддерживает визуализации и параллельные вычисления.
  • Курс по компьютерному столярному делу преподает базовые навыки для научных вычислений, проведения учебных курсов и предоставления учебные материалы в открытом доступе.

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

  • Такие книги, как «Как думать как компьютерщик», Программирование на Python: введение в информатику и Практическое программирование.
  • Специальная группа по образованию хорошее место для обсуждения вопросов обучения.

Библиотека Tk GUI входит в состав большинства бинарных дистрибутивов Python.

Доступны некоторые наборы инструментов, которые можно использовать на нескольких платформах отдельно:

  • wxWidgets
  • Kivy, для написания мультитач-приложений.
  • Qt через pyqt или pyside

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

  • GTK+
  • Классы Microsoft Foundation через расширения win32

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

  • SCons для контроля сборки.
  • Buildbot и Apache Gump для автоматической непрерывной компиляции и тестирования.
  • Roundup или Trac для отслеживания ошибок и управления проектами.

Python также используется для создания систем ERP и электронной коммерции:

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

Как создать и запустить приложение Python

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

Но эффективность Python заключается не только в отсутствии зависимости от компилятора. Python делает отладку кода очень простой. Когда вы запускаете свое приложение Python, если интерпретатор сталкивается с ошибкой в ​​коде, он предоставляет очень четкое указание на то, что не так, построчно. Из-за этого Python является одним из самых простых языков для изучения. Именно поэтому так много новичков в программировании предпочитают начинать с Python.

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

Я буду демонстрировать на Pop!_OS Linux, но это будет работать на любой платформе, поддерживающей Python.

ПОСМОТРЕТЬ: Python пожирает мир: как сторонний проект одного разработчика стал самым популярным языком программирования на планете (обложка в формате PDF) (TechRepublic)

Что вам понадобится

Чтобы это работало, вам понадобится операционная система, поддерживающая Python 3. Я покажу вам, как установить Python 3 в Linux. Если вы используете другую операционную систему, вам необходимо изменить инструкции по установке в соответствии с выбранной вами платформой.

SEE: Python playbook: информация об обновлении, новые функции, советы по установке и использованию и многое другое (бесплатный PDF) (TechRepublic)

Как установить Python 3

С 1 января 2020 г. поддержка Python 2 официально прекращается. Хотя вы можете установить Python 2, вы обнаружите, что некоторые его функции не имеют обратной совместимости с Python 3. Поэтому вам необходимо установить Python 3.

Первое, что вы должны сделать, это установить последнюю версию Python. Для этого откройте окно терминала на вашем компьютере с Linux и введите команду:

sudo apt-get установить python3 -y

Если вы используете дистрибутив на основе Red Hat, эта команда будет:

sudo dnf установить python3 -y

Если вы работаете с macOS или Windows, загрузите необходимый установщик для своей платформы с официальной страницы загрузки Python.

Чтобы убедиться, что установка прошла успешно, введите команду:

python3 --версия

Вы должны увидеть напечатанный номер версии Python ( Рисунок А ).

Рисунок А

Python 3.8.2 установлен на Pop!_OS Linux.

ПОСМОТРЕТЬ: Набор для найма: Разработчик Python (TechRepublic Premium)

Как создать свое первое приложение Python

Давайте перейдем к делу и создадим наше первое приложение. Как я уже упоминал, мы собираемся создать приложение, которое принимает пользовательский ввод в виде названия программного обеспечения и лицензии на программное обеспечение. Затем этот ввод будет записан в файл с именем licenses.txt.

Первое, что мы сделаем, это создадим новый каталог для размещения наших проектов Python. Введите команду:

мкдир ~/ПИТОН

Перейдите в этот новый каталог с помощью команды:

компакт-диск ~/ПИТОН

Код нашего приложения будет разбит на три части:

  • Ввод: Определение функций для пользовательского ввода
  • Файл: Определите файл, который будет использоваться для сохранения вывода
  • Выход: Определите, как должен быть отформатирован наш вывод

Чтобы принимать данные от пользователя, мы определим две переменные:

  • input1: Используется для ввода названия программного обеспечения
  • input2: Используется для ввода лицензии на программное обеспечение

Наши первые две строки кода представляют собой простые объявления переменных для input1 и input2:

input1 = input("Название программного обеспечения:")
input2 = input("Номер лицензии:")

Хотите верьте, хотите нет, но это наш первый раздел кода. Когда программа запрашивает данные input1, она четко распечатывает, для чего эти данные (название программного обеспечения). То же самое относится и к input2 (лицензия на программное обеспечение). Конечно, мы добавим комментарии, чтобы всем было понятно.

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

файл = открыть ("имя файла")

Однако нам нужно, чтобы наш файл добавлял новый ввод в конец файла, иначе при каждом использовании приложения он будет перезаписывать предыдущий ввод. Для этого мы используем опцию «a» для добавления. Итак, теперь наша секция открытия файла выглядит так:

файл = открыть ("licenses.txt", "a")

Далее идет последний (и самый большой) раздел нашего приложения, вывод. Что мы собираемся сделать, так это определить вывод таким образом, чтобы он был в форме:

Название программного обеспечения: Лицензия на программное обеспечение
---

Каждая запись будет разделена тремя дефисами для ясности.

Как выглядит этот раздел? Мы будем использовать наши переменные (input1 и input2) из ​​раздела ввода в сочетании с функцией file.write (которая записывает ввод в файл). Первая строка:

файл.запись(вход1)

Это примет все, что пользователь введет для input1, и сохранит его в файл licenses.txt.

Следующая строка:

файл.запись(":")

В строке выше ставится двоеточие сразу после переменной input1. Все, что заключено в кавычки, фактически печатается непосредственно в выходной файл.

Далее мы берем ввод из переменной input2 и записываем его сразу после двоеточия. В дополнение к этому мы собираемся добавить новую опцию строки (чтобы добавить возврат каретки), чтобы после окончательного ввода следующий файл file.write начинался с новой строки. Это делается с помощью:

файл.запись (вход2 + "
")

«
» читается как новая строка в Python3.

Наша следующая строка выписывает тире и добавляет новую строку, например:

файл. запись ("---" + "
")

Наконец, мы закрываем сеанс записи файла строкой:

файл.close()

Вот и все для нашего кода Python3. Добавляем комментарии, чтобы весь файл выглядел так:

# ЭТА ПРОГРАММА ЧИТАЕТ ЛИЦЕНЗИОННЫЙ ВВОД ОТ ПОЛЬЗОВАТЕЛЯ
# И ВЫВОДИТ ЕГО В ФАЙЛ license.txt

# СНАЧАЛА ВВОДИМ НАЗВАНИЕ ПРОГРАММЫ
input1 = input(«Название программы:»)

# ДАЛЕЕ ВВОДИМ ВВОД ДЛЯ ЛИЦЕНЗИИ НА ПРОГРАММУ
input2 = input(«Номер лицензии:»)

# ТЕПЕРЬ МЫ ОПРЕДЕЛЯЕМ ФАЙЛ ДЛЯ СОХРАНЕНИЯ ВЫВОДА В
# ИСПОЛЬЗУЕМ ОПЦИЮ «a» ДЛЯ ДОПОЛНЕНИЯ К ФАЙЛУ
# В ИНАЧЕ КАЖДЫЙ ВВОД БЫЛ ПЕРЕЗАПИСЫВАТЬ
# ПРЕДЫДУЩИЙ ВВОД

файл = открыть(«licenses.txt», «a»)

# МЫ ИСПОЛЬЗУЕМ НЕСКОЛЬКО ОПЕРАЦИЙ file.write ДЛЯ ЗАПИСИ ВЫВОДА В ФОРМАТЕ
# НАИМЕНОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ЛИЦЕНЗИЯ ОТДЕЛЯЮТСЯ А :
# И КАЖДОЕ НАЗВАНИЕ/ЛИЦЕНЗИЯ ОТДЕЛЯЕТСЯ А —

file.write(input1)
file.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *