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

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

Установка

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

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

  1. Скачать с http://kivy.org/#download Kivy2.7z (использует системный питон 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

Ставим свежий питончик.

pyenv install 3.5.1

Иногда установка падает:

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

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

xcode-select --install

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

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

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

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

Kivy interpreter

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

  1. Для этого качаем https://github.com/Zen-CODE/kivybits/blob/master/IDE/PyCharm_kv_completion.jar?raw=true
  2. В PyCharm в меню File -> Import Settings импортируем этот файл.
  3. Удостоверившись, что стоит галочка File types, нажимаем OK.
  4. Перезагружаем PyCharm и наслаждаемся результатом.

С настройкой все. В следующей статье обсудим более практические вопросы.



c