Разработка декстопных приложений для linux (Владимир...

Post on 14-Jan-2015

201 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Владимир Яковлев - Python Developer / Odesk / Россия, Санкт-Петербург - выбор фреймворка: TkInter/PySide/PyQt/PyGI; - что делать если не хватает одного потока; - взаимодействие с системой и другими приложениями; - сборка и публикация пакетов. http://www.it-sobytie.ru/events/2040

TRANSCRIPT

Разработка desktop приложений для linuxна pythonВладимир Яковлевnvbn.rm@gmail.com

Кто я?Python developer на odesk.Основатель открытых проектов:

● series_list (python, PySide);● everpad (python, PySide);● coviolations.io (python, django, gevent);● django-bower (python, django);● subman.io (clojure).

http://github.com/nvbn/

Основные моментыОбзор gui фреймворков:

● TkInter;● PyQt/PySide;● PyGI (gtk).

Что делать, если не хватает одного потока?Взаимодействие с окружением.Сборка и публикация пакетов.

Обзор gui фреймворковTkInterВходит в стандартную библиотеку:

Обзор gui фреймворковTkInterPythonic:

Обзор gui фреймворковTkInterНе нативно выглядит:

Обзор gui фреймворковPyQt vs PySidePyQt:

● поддерживает Qt 5;● лицензия - GPL.

PySide:● только Qt 4;● лицензия - LGPL.

Обзор gui фреймворковPySideQtDesigner - можно легко и быстро сделать интерфейс.

Хорошая документация с примерами.

Обзор gui фреймворковPySideВезде нативный внешний вид:

Обзор gui фреймворковPySideWebKit, Phonon и другие батарейки:

Обзор gui фреймворковPySideНе pythonic:

Обзор gui фреймворковPyGI (gtk)Нативный внешний вид в linux:

Обзор gui фреймворковPyGI (gtk)Pythonic:

Обзор gui фреймворковPyGI (gtk)Хорошая документация для gtk 3.

Документация для gobject только для C.

Что делать, если не хватает одного потока?threading:

● I/O;● расширения на C отпускают GIL;● общая память.

Что делать, если не хватает одного потока?multiprocessing:

● I/O и “вычисления”;● изолированная память.

Что делать, если не хватает одного потока?Что у нас есть:

● STM - не готово;● акторы - есть pykka, но без поддержки

multiprocessing;● Queue, Pipe и т.д.

Взаимодействие с окружениемDBus:

● библиотеки почти во всех ЯП;● стандарт freedesktop.org;● очень простой;● синхронный/асинхронный.

Взаимодействие с окружениемИнтеграция с DE:

● unity: scopes, indicators;● gnome: extensions;● kde: plasma applets, krunner.

Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad:

1. заполнить debian/*;2. собрать пакет, используя debuild;3. отправить в launchpad, используя dput;4. повторить пункты 1 - 3 для всех

зависимостей, которых нет в репозитории.

Сборка и публикация пакетовМожно упростить с pytoppa, он:

● имеет простой конфиг в yaml:

● берёт информацию из setup.py;● генерирует changelog;● написан мной =)

Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad с pytoppa:

1. заполнить .pytoppa.yml;2. запустить pytoppa <ключ> <ppa>;3. повторить 1 - 2 для всех зависимостей.

Спасибо за внимание.

nvbn.rm@gmail.comhttp://nvbn.info/

top related