Пишем приложение на 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

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

приложений для 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 3.11.3

Python поддерживает множество модулей для работы с различными формами структурированных разметка данных. Сюда входят модули для работы со стандартной обобщенной разметкой. язык (SGML) и язык гипертекстовой разметки (HTML), а также несколько интерфейсов. для работы с расширяемым языком разметки (XML).

  • html — Поддержка языка гипертекстовой разметки
  • html.parser — Простой парсер HTML и XHTML
    • Пример приложения парсера HTML
    • HTMLParser Методы
    • Примеры
  • html.entities — Определения общих сущностей HTML
  • Модули обработки XML
    • Уязвимости XML
    • Пакет defusedxml
  • xml.etree.ElementTree — XML API ElementTree
    • Учебное пособие
      • XML-дерево и элементы
      • Разбор XML
      • Pull API для неблокирующего синтаксического анализа
      • Поиск интересных элементов
      • Изменение файла XML
      • Создание XML-документов
      • Разбор XML с пространствами имен
    • Поддержка XPath
      • Пример
      • Поддерживаемый синтаксис XPath
    • № по каталогу
      • Функции
    • XВключить опору
      • Пример
    • № по каталогу
      • Функции
      • Объекты элементов
      • Объекты ElementTree
      • Объекты QName
      • Объекты TreeBuilder
      • Объекты XMLParser
      • Объекты XMLPullParser
      • Исключения
  • xml. dom — API объектной модели документа
    • Содержание модуля
    • Объекты в DOM
      • Объекты реализации DOMI
      • Узловые объекты
      • Объекты списка узлов
      • Объекты типа документа
      • Объекты документа
      • Объекты-элементы
      • Атрибуты объектов
      • Объекты NamedNodeMap
      • Объекты комментариев
      • Текст и объекты CDATASection
      • Объекты инструкции по обработке
      • Исключения
    • Соответствие
      • Сопоставление типов
      • Методы доступа
  • xml.dom.minidom — Минимальная реализация DOM
    • Объекты DOM
    • Пример DOM
    • minidom и стандарт DOM
  • xml.dom.pulldom — Поддержка построения частичных деревьев DOM
    • Объекты DOMEventStream
  • xml.sax — Поддержка парсеров SAX2
    • Объекты SAXException
  • xml.
Оставить комментарий

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

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