Kivy — интересный проект, который позволяет делать кроссплатформенные GUI‑приложения, включая мобильные. Я решил выяснить, можно ли использовать его для создания маленьких приложений на Python. В этой серии статей я попробую исследовать Kivy на примере клона «конструктора слов» — одного из упражнений для LingvoLeo.

Эта серия — не учебник, а исследовательский лог моих попыток. В результате я планирую получить собранные приложения для трёх платформ минимум: Windows, Mac, Android. Будет здорово, если я соберу ещё и iOS‑версию. В качестве основной платформы для разработки я использую Mac, так что все инструкции по установке и настройке окружения будут для этой операционной системы.

Установка

Под Mac есть два способа поставить Kivy: скачать бандл или установить зависимости из Homebrew, а Kivy поставить с помощью pip.

Первый способ (быстрый)

  1. Скачайте с kivy.org/#download Kivy2.7z (использует системный Python 2.7) или Kivy3.7z (включает в себя Python 3.5).

  2. Распакуйте архив.

  3. Скопируйте в приложения:

    sudo mv Kivy3.app /Applications/Kivy.app
    
  4. Создайте симлинк:

    ln -s /Applications/Kivy.app/Contents/Resources/script /usr/local/bin/kivy
    

Минус этого способа установки в том, что создаётся только одно виртуальное окружение на все Kivy‑проекты. Для маленьких проектов такой способ подойдёт, для больших — сомневаюсь. Так что лучше сразу ставить фреймворк в своё окружение.

Второй способ (правильный)

Предполагаю, что вы пользуетесь pyenv и pyenv‑virtualenv.

Первым делом ставим зависимости:

brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

Ставим свежий Python:

pyenv install 3.5.1

Иногда установка падает с ошибкой:

zipimport.ZipImportError: can't decompress data; zlib not available

В этом случае поможет:

xcode-select --install

Как только свежий Python установлен, создаём виртуальное окружение для нашего проекта:

pyenv virtualenv 3.5.1 WordConstructor

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

pyenv activate WordConstructor

Ставим Cython:

pip install -I Cython==0.23

Ставим Kivy:

USE_OSX_FRAMEWORKS=0 pip install kivy

Проверим, что всё работает. Создадим файлик main.py в папке с проектом с таким содержимым:

from kivy.app import App
from kivy.uix.widget import Widget

class WordConstructorGame(Widget):
    pass

class WordConstructorApp(App):
    def build(self):
        return WordConstructorGame()

if __name__ == '__main__':
    WordConstructorApp().run()

Запустим:

python main.py

Если открылось окно с заголовком WordConstructor, всё установилось и работает как надо.

PyCharm

Теперь настроим проект в PyCharm.

В Preferences выбираем Project Interpreter, соответствующий нашему виртуальному окружению.

![Kivy interpreter]({filename}/images/kivy-interpreter.png)

Для описания интерфейсов в Kivy используется свой язык — Kv Design Language. Неплохо бы добавить для него подсветку синтаксиса и автокомплит:

  1. Для этого скачайте PyCharm_kv_completion.jar.
  2. В PyCharm в меню File → Import Settings импортируйте этот файл.
  3. Убедившись, что стоит галочка File types, нажмите OK.
  4. Перезагрузите PyCharm и наслаждайтесь результатом.