0,0
рейтинг
22 октября 2014 в 15:31

Разработка → Pythonista. Пишем на Python для iOS из песочницы

Планшет iPad от компании Apple — всем известное и не нуждающееся в рекламе устройство. Но очень часто хочется использовать всю мощь этого устройства не только для игр и развлечения, а для серьёзной работы. Например для написания программ. Несмотря на 4-x летнею историю развития этого гаджета и наличие разных моделей удобных сред для программирования под iOS существует крайне мало. (Оговорюсь сразу, во избежании дальнейшей путаницы: программирование на iOS — значит написание кода и запуск программы на iPad или iPhone, а программирование для iOS — написание приложения, которое может быть выложено в App Store.)



Недавно я наткнулся на великолепную программку Pythonista, которая позволяет писать на iOS для iOS.

Краткое описание


Как пишут создатели этой программы:
Pythonista brings the Zen of Python to your iPad or iPhone.
И это действительно так. Программа является лучшим компилятором для Python.

На мой взгляд, лучшим это приложение делают 3 вещи:

  • Не нужно интернет-подключение для запуска программы. iPad действительно становиться рабочей станцией;
  • Есть всплывающие подсказки и встроенная документация (опять же без доступа к интернету);
  • И, конечно, самое главное, это возможность экспорта в XCode.


Обзор


Среда ориентирована на Python 2.7. Но есть и некоторые фишки из 3-й ветки. Например, сработает и такой код:

print "Hello, world"
и код
print ("Hello, world")


Кроме стандартных библиотек, есть несколько библиотек для непосредственной разработки для iOS. Остановлюсь на одной. Она называется ui и отвечает за GUI.

Рассмотрим несколько примеров работы с этой библиотекой. Очень интересно, что в Pythonista графический интерфейс можно задавать программно, а можно нативно:

import ui

def button_tapped(sender):
    sender.title = 'Hello'

view = ui.View()                                      # [1]
view.name = 'Demo'                                    # [2]
view.background_color = 'white'                       # [3]
button = ui.Button(title='Tap me!')                   # [4]
button.center = (view.width * 0.5, view.height * 0.5) # [5]
button.action = button_tapped                         # [6]
view.add_subview(button)                              # [7]
view.present('sheet')                                 # [8]


Это первый пример по работе с библиотекой ui. Разберём программу построчно:

1) Сначала создаём объект View;
2) Потом задаём имя этого объекта, оно будет отображаться в его заголовке;
3) Устанавливаем цвет фона объекта — белый, можно задавать словом, а можно при помощи RGB;
4) Создаём кнопку с надписью «Tap me!»;
5) Размещаем кнопку на объекте;
6) Задаём функцию, которая будет выполняться при нажатии на кнопку. (В данном случае изменится надпись на кнопке);
7) Уточняем, что «button» является наследником «view»;
8) Наконец, вызываем метод view.present() для отображения объекта на экране iOS устройства.

Вот что будет происходить на айпаде:

imageimage

Но тоже самое можно сделать и нативно:

1) Создадим скрипт с UI:

image

2) Открыв UI, нажмем на кнопку "+" и выберем button:

image

3) Растянем кнопку и разместим её по центру экрана:

image

4) Откроем атрибуты кнопки и зададим функцию, срабатывающую при её нажатии:

image image

4) Перейдём в редактор скрипта и напишем функцию:

def button_tapped(sender):
    sender.title = 'Hello'

Скажем, к какому UI привязать данный скрипт:

ui.load_view('My UI').present('sheet')


image
5) Запустим программу:

imageimage

В завершение


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

Рекомендую посетить сайт создателей Pythonista. На нём есть документация , к сожалению, только на английском языке.

UPD: Читайте мою статью посвящённую этой программе и автоматизации iOS в февральском номере журнала ][акер
Виктор Паперно @Snusmumrick97
карма
9,0
рейтинг 0,0
студент
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (17)

  • 0
    Реально ли что-то стоящее написать и выложить это в апп стор?
    • +2
      Нет, но если очень хочется писать на питоне, смотрите в сторону kivy
    • 0
      Судя по тому, что на форуме обсуждается вопрос экспорта в Xcode, мне кажется это возможным. Возможно, из-за того, что программа новая, никто ещё это не сделал.
  • 0
    А писать можно только в самом приложении? Или можно заниматься написанием код на компе, а потом закидывать и запускать уже на планшете?
    • 0
      Напрямую закидывать запрещает политика Apple, но обходные пути существуют. В самой питонисте есть модуль для dropbox, можно написать http сервер, или использовать ftp через pyftpd.
  • –1
    Интересно то, что в pythonista можно делать вот такой трюк:
    import urlib
    import editor
    url = 'https://raw.github.com/gist/mygist.py
    contents = urllib.urlopen(url).read()
    editor.make_new_file('AirHockey', contents)
    


    Таким образом можно распространять приложения. Я бы, например, «поставил» бы парочку для управления той или иной открытой системой через ее api.
    • 0
      а как вы это приложение потом запустите? Я хоть не ios разработчик, но там же у каждого приложения своя песочница ж
      • 0
        .py скрипт со всеми вложениями загрузится, создастся в редакторе (editor.make_new_file('AirHockey', contents), после чего его можно запустить через редактор либо через специальный ярлык со своим scheme (pythonista://MyScript?action=run).

        Приложение, естественно, запускается в песочнице pythonista.
  • +1
    Зачем делать сложное еще более сложным? Тебе сложно научиться писать на Objective C/Swift, тогда у нас для тебя есть еще более замороченное решение. :)
    • +1
      Может дело не в сложности, а нежелании распылять усилия на изучение множества языков и сопутствующих технологий?
      • 0
        Ну к попытке описать весь мир при помощи одного только Python всерьез относиться тоже сложно.
        • +4
          А как по мне, требование изучать специальный язык для каждой платформы — вот глупость несусветная.
          • 0
            А требование изучать язык для жизни в другой стране — тоже глупость?
            Общение через переводчика не будет полноценным.
          • +1
            Я в школе учил Pascal и хочу писати только на нем. Учить другой язык? Да ни за что, мне и этот нравится.
  • 0
    А ещё есть приложение Computable для любителей Ipython Notebooks.

    В питонисту не так давно добавили пакеты numpy и matplotlib, стало вообще круто. Если бы ещё редактор довести до уровня Textastic, то приложению цены не будет.

    Чтобы удобно таскать файлы туда-сюда я использую pyftpd. Удобнее чем через dropbox api :)
  • 0
    Я недавно пощупал Titanium Appcelerator в рамках своего плана полюбить Javascript. Очень и очень неплохой инструмент. Решил свои задачи в кросс-платформенном мобильном приложении, а также немного продвинулся в плане (не до конца пока)). Получившееся приложение выглядит нативно, работает без лагов, очень рекомендую!
  • 0
    Читайте мою статью посвящённую этой программе и автоматизации iOS в февральском номере журнала ][акер.

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