- •27. Типы данных и строки Python Mobile, примеры.
- •28. Списки и кортежи Python Mobile, примеры.
- •29. Управляющие конструкции Python Mobile, примеры.
- •30. Функции Python Mobile, определение, вызов.
- •32. Модули в Python. Разработка пользовательского интерфейса в Python Mobile. Диалоговые функции note, popup_menu, примеры использования. Note(text[, type[, global] ]
- •33. Модули в Python. Разработка пользовательского интерфейса в Python Mobile. Диалоговые функции query, multi_query, selection_list, примеры использования.
- •34. Структура пользовательского интерфейса мобильного приложения для s60, объект app, атрибуты body, title, menu, примеры использования.
- •35. Структура пользовательского интерфейса мобильного приложения для s60, объект app, атрибуты screen, exit_key_handler(), примеры использования.
- •In_emulator()
- •Is_ui_thread()
- •Inactivity()
- •39.Работа с файлами в Python Mobile, объект File, примеры использования.
- •40.Чтение и запись текста в Python Mobile, примеры. Чтение и запись текста
- •41. Чтение и запись в файл указанных значений в Python Mobile, примеры.
- •42. Создание локальных баз данных средствами Python Mobile, примеры.
34. Структура пользовательского интерфейса мобильного приложения для s60, объект app, атрибуты body, title, menu, примеры использования.
App Является объектом, который не нужно создавать, так как это уже произошло при загрузке модуля — просто используем его возможности. Объект имеет следующие атрибуты:
body
Отвечает за рабочую область приложения (его «тело»). Может быть присвоен один из трех объектов: Text, Canvas, Listbox. Что это за объекты, будет рассказано в следующих статьях.
menu
Этому атрибуту присваивается специального вида список для создания меню (вызывается при нажатии на левую софт-клавишу):
>>> def exit():
... if appuifw.query(u»You want exit?», «query»)==1:
... appuifw.app.set_exit()
...
>>> appuifw.app.menu = [(u»Exit»,exit)]
>>>
Теперь попробуйте нажать на левую софт-клавишу (появится меню для выбора нужной функции).
Общий вид списка: [(title1, callback1), (title2, callback2),...,(titleN, callbackN)]. Каждый кортеж состоит из одного элемента в виде строки, отвечающего за имя пункта, и второго элемента в виде имени функции, вызываемой сразу после выбора пункта. Вот пример с несколькими пунктами:
>>> def about():
... appuifw.note(u’My name Python!’)
...
>>> def exit():
... if appuifw.query(u»You want exit?», «query»)==1:
... appuifw.app.set_exit()
...
>>> menu = [
...(u’About’, about),
...(u’Exit’, exit)]
>>> appuifw.app.menu = menu
>>>
title
Атрибут отвечает за подпись приложения в верхней части экрана. Часто программисты задают его изменение в зависимости от ситуации по ходу выполнения программы, а не только единовременно после запуска:
>>> print appuifw.app.title
u’Python’
>>> appuifw.app.title = u’Hello World!’
>>>
35. Структура пользовательского интерфейса мобильного приложения для s60, объект app, атрибуты screen, exit_key_handler(), примеры использования.
app
Является объектом, который не нужно создавать, так как это уже произошло при загрузке модуля — просто используем его возможности. Объект имеет следующие атрибуты:
screen
Атрибут отвечает за размер видимой части экрана приложения. Может иметь три значения: ‘normal’ (по умолчанию), ‘large’ (средний), ‘full’ (на весь экран — обычно используется в играх):
>>> def normal():
... appuifw.app.screen = ‘normal’
...
>>> def large():
... appuifw.app.screen = ‘large’
...
>>> def full():
... appuifw.app.screen = ‘full’
...
>>> menu = [
...(u’Normal’, normal),
...(u’Large’, large),
...(u’Full’, full)]
>>> appuifw.app.menu = menu
exit_key_handler()
Этот метод вызывается при нажатии на правую софт-клавишу (именно на нее обычно нажимают для выхода из программы или отмены действия):
>>> def exit():
... if appuifw.query(u»You want exit?», «query»)==1:
... appuifw.app.set_exit()
>>> appuifw.app.exit_key_handler = exit
>>>
Теперь попробуйте нажать на правую софт-клавишу. В общем, ему может быть присвоено имя любой функции.
36. Объект объекта Ao_lock, пример использования. Метод сигнализирует объект Ao_lock о том, что нужно продолжить работу.
Пример:
>>> import e32,appuifw
>>> lock=e32.Ao_lock()
>>> def press():
… lock.signal()
… appuifw.note(u“Signal!”)
…
>>> appuifw.app.menu=[(u”Signal”,press)]
>>> lock.wait()
>>>
В данном примере программа останавливает свое выполнение после ввода последней команды lock.wait(). Хотя и можно будет вводить данные, выполнение команд в консоли не будет доступно (пропадет привычное приглашение «>>>»). Разблокировать текущий поток можно с пункта Singal в меню «Функции», пункт Signal. Нажатие по этому пункту приведет к выполнению функции press с помощью команды lock.signal().
37. Перехват событий в мобильных приложениях, модуль keycapture, примеры. Данный модуль предоставляет средства для глобального перехвата событий, в частности, нажатие на клавиши. С этой целью используется объект KeyCapturer. При его создании необходимо в обязательном порядке указать имя той функции, которая будет вызываться каждый раз при нажатии на клавишу. Этой функции в качестве параметра и будет передаваться код нажатой клавиш.
Атрибуты объекта:
keys
Список кодов всех клавиш, которые нам необходимо перехватить.
forwarding
Указывает, передавать ли нажатия на клавиши только данному объекту, или оставить возможность их обработки другими приложениями. Если атрибут равен 1, то фактически перехват будет осуществляться скрыто, т.е. на обычные программы это не отразится – с ними также можно будет работать. Если он равен 0, то все нажатия будут обрабатываться только объектом KeyCapturer, а другие программы будут считать, что нажатий вовсе и не было.
Методы объекта:
start()
Указывает начать перехват событий.
stop()
Указывает закончить перехват событий.
last_key()
Возвращает код последней нажатой клавиши.
Модуль также содержит одну переменную:
all_keys
Список кодов и скан-кодов всех клавиш (берутся из модуля key_codes). Переменная присваивается атрибуту keys объекта KeyCapturer в случае необходимости перехвата нажатий на любые клавиша.
Пример:
>>> keys = (key_codes.EkeyUpArrow,)
>>> keys = keycapture.all_keys
>>>
38.Сервисные функции модуля e32, примеры использования для мобильных приложений. Модуль e32 позволяет использовать сервисные функции операционной системы Symbian. Загружаем на смартфоне консоль Python и приступаем к изучению:
>>> import e32
>>> dir(e32)
[‘Ao_lock’, ‘Ao_timer’, ‘__doc__’, ‘__name__’, ‘_as_level’, ‘_globcnt’, ‘_mem_info’,’_stdo’, ‘_uidcrc_app’, ‘ao_callgate’, ‘ao_sleep’,’ ao_yield’, ‘drive_list’, ‘file_copy’, ‘in_emulator’, ‘inactivity’, ‘is_ui_thread’, ‘pys60_version’, ‘pys60_version_info’, ‘reset_inactivity’, ‘s60_version_info’, ‘set_home_time’,’ start_exe’, ‘start_server’, ‘strerror’]
>>>
Список поменьше, чем у appuifw, но мы не будем встречать модуль «по одежке», а сразу начнем изучать его «умственные» способности:
pys60_version
Переменная (строка), содержащая информацию о версии Python.
>>> e32.pys60_version
“1.4.0 final”
>>>
pys60_version_info
Переменная (кортеж), содержащий более подробную информацию о версии Python.
>>> e32.pys60_version_info
(1, 4, 0, “ final”, 0)
>>>
s60_version_info
Переменная (кортеж), содержащий информацию о версии SDK, на котором был скомпилирован Python:
1) (1, 2) на SDK S60 1st Edition;
2) (2, 0) на SDK S60 2nd Edition;
3) (2, 6) на SDK S60 2nd Edition Feature Pack 2;
4) (2, 8) на SDK S60 2nd Edition Feature Pack 3;
5) (3, 0) на SDK S60 3rd Edition.
>>> e32.s60_version_info
(2, 8)
>>>
|
ao_callgate(wrapped_callable)
Возвращает объект-функцию (на основе функции wrapped_callable), которую можно вызвать из любого потока программы.
ao_sleep(interval [, callback ])
Функция, после запуска которой программа «засыпает» на указанное количество секунд (interval). Вторым необязательным аргументом (callback) может быть имя функции, которая вызывается сразу после окончания «спячки». Данная функция обычно применяется в программах, где необходимо постоянно обновлять данные, и в играх при отрисовке анимации:
>>> e32.ao_sleep(5)
>>> def callback():
… print “Hello!”
…
>>> e32.ao_sleep(5, callback)
Hello!
>>>
После вызова первой функции e32.ao_sleep(5) программа «заснет» на 5 секунд. После этого интервала будет вызвана вторая функция, которая выведет сообщение «Hello!».
ao_yield()
Функция указывает планировщику обработать системные события. Не позволяет зависнуть программе, интенсивно работающей с данными, поэтому часто используется при осуществлении математических вычислений, в играх и работе с файлами.
drive_list() – возвращает список дисков в виде списка строк Unicode. Обычно используется при определении путей к необходимым файлам и при создании файловых менеджеров:
>>> e32.drive_list()
[u”C:”, u”D:”, u”E:”, u”Z:”]
>>>
|
file_copy(target_name, source_name)
Функция копирует файл source_name (строка) в папку target_name (строка), при этом имя файла не изменяется. Если нужно одновременно и переименовать файл, то target_name должен содержать полный путь с новым именем файла. Если указанный файл target_name уже существует, то будет сгенерировано исключение.
>>> e32.file_copy(“e:\\”, “c:\\file.txt”)
>>> e32.file_copy(“e:\\name.txt”, “c:\\file.txt”)
>>>
