Kivy — интересный проект, который позволяет делать кроссплатформенные GUI‑приложения, включая мобильные. Я решил выяснить, можно ли использовать его для создания маленьких приложений на Python. В этой серии статей я попробую исследовать Kivy на примере клона «конструктора слов» — одного из упражнений для LingvoLeo.
Эта серия — не учебник, а исследовательский лог моих попыток. В результате я планирую получить собранные приложения для трёх платформ минимум: Windows, Mac, Android. Будет здорово, если я соберу ещё и iOS‑версию. В качестве основной платформы для разработки я использую Mac, так что все инструкции по установке и настройке окружения будут для этой операционной системы.
Установка
Под Mac есть два способа поставить Kivy: скачать бандл или установить зависимости из Homebrew, а Kivy поставить с помощью pip.
Первый способ (быстрый)
-
Скачайте с kivy.org/#download
Kivy2.7z(использует системный Python 2.7) илиKivy3.7z(включает в себя Python 3.5). -
Распакуйте архив.
-
Скопируйте в приложения:
sudo mv Kivy3.app /Applications/Kivy.app -
Создайте симлинк:
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 используется свой язык — Kv Design Language. Неплохо бы добавить для него подсветку синтаксиса и автокомплит:
- Для этого скачайте PyCharm_kv_completion.jar.
- В PyCharm в меню File → Import Settings импортируйте этот файл.
- Убедившись, что стоит галочка File types, нажмите OK.
- Перезагрузите PyCharm и наслаждайтесь результатом.