Форум программистов, компьютерный форум, киберфорум
Фаер
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Python For Android. Урок 5. Интерфейс.

Запись от Фаер размещена 12.05.2012 в 18:29
Показов 11766 Комментарии 0

Продолжаем разбирать графические интерфейсы.

Метод:
Python
1
droid.addContextMenuItem('name','event')
Добавляет в контекстное меню новый параметр с именем name. Контекстное меню открывается продолжительным нажатием на экран смарта(аналог щелчка правой кнопкой мыши). Данную функцию не так просто с толком интегрировать в скрипт, почему, Вы сейчас сами поймёте:

Python
1
2
3
4
5
6
from android import Android
droid=Android()
droid.addContextMenuItem('Print','Event')#добавляем опцию в контекстное меню
p=droid.eventWait().result#ждём пока пользователь откроет меню и выберет что-нибудь
if p['name']=='Event':#определяем, что пользователь нажал
    print('Hello man!!!')
Обратите внимание, параметр name - имя события, указывает на 2-ой аргумент('Event'), переданный методу addContextMenuItem(), первая же строка('Print') является именем опции в меню.
В функции eventWait(), в скобках можно передать промежуток времени в долях секунды, в течении которого ожидается ввод контекстной команды. Если же Вам нужно, чтобы смартфон выполнял инструкции, стоящие после eventWait() и при этом не забывал реагировать на команды контекстного меню, то этот метод следует запустить в параллельном потоке.

Идём дальше:
addOptionsMenuItem() - добавляет кнопку в меню вызываемое нажатием Smart-кнопки "Menu". Первый параметр, передаваемый в скобках - название кнопки, второй - имя события(так же как и в addContextMenuItem()), третий - необязателен и более того бесполезен(просто вводите None) и четвёртый - адрес системного значка, который Вы хотите прикрепить к кнопке - тоже необязательный параметр. Пример:

Python
1
2
3
4
5
6
from android import Android
droid=Android()
droid.addOptionalMenuItem('Press','Stop',None,None)
p=droid.eventWait().result
if p=='Stop':
    print('Stop it now')
Для уничтожения созданных кнопок используются методы:
droid.clearOptionsMenu()
droid.clearContextMenu()


А теперь давайте немного вспомним прошлый урок. Мы разобрали методы dialogGetInput() и dialogGetPassword(), которые создают окно с полем для ввода и двумя кнопками: Ok и Cancel. В Python For Android имеются ешё две похожие функции: dialogCreateInput() и dialogCreatePassword(). Они отличаются от Get'ных тем, что создают виджет, к которому можно прикреплять другие виджеты, желательно кнопки, так как по умолчанию эти функции создают только поле для ввода. Во всех четырёх функциях создания поля для ввода, в скобках кроме заголовка окна и сообщения можно добавить третью строку - ввод по умолчанию:
Python
1
dialogGetInput('Заголовок', 'Сообщение', 'Текст')
В результате Вы получите поле для ввода, в которое автоматически будет введена строка 'Текст'.

Вот ещё один виджет, более известный как ползунок:

Python
1
2
3
4
5
6
7
from android import Android
droid=Android()
droid.dialogCreateSeekBar(0,100,'Bar','Move it')# 1-ый параметр - минимальное значение, 2-ой - максимальное
droid.dialogSetPositiveButtonText('Yes')
droid.dialogShow()
p=droid.dialogGetResponse().result
print(p)
В результате Вы получите словарь с двумя параметрами, 1-ый из которых progress - значение, установленное с помощью ползунка.
Это также "одинокий" виджет, на который следует цеплять кнопки(второй параметр в полученном словаре - это значение нажатой кнопки, в вышеприведённом скрипте это positive)

В заключение несколько советов:
Во-первых, когда пишите скрипт, учитывайте, что процессор смартфона слабее компьютерного, следовательно исполнение крупных программ может привести к "торможению" и "зависанию". Чтобы этого не случилось используйте свои ресурсы экономно: не импортируйте модули полностью, выбирайте только то, что Вам нужно. Для этого и существует метод импорта:
Python
1
from ... import ...
Кроме того старайтесь закрывать скрипты, которые Вы уже или пока не используете. Так же обращайте внимание на периоды выполнение операций, особенно при работе с сенсорами, так как их использование может сильно замедлить работу Вашего смартфона. Вот пример простого экономного скрипта:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from android import Android# импорт одного класса вместо всего модуля
droid=Android()
droid.startSensingTimed(2,50)# включение только акселерометра два раза в секунду
s=False
droid.toggleBluetoothState(True)
droid.bluetoothMakeDiscoverable(120)# включение режима видимости на 120 сек.
while not s==True:
    r=droid.sensorsReadAccelerometer()
    if r.result[0]>6:
        droid.toggleBluetoothState(False)#при повороте смарта влево отключается Bluetooth
        s=True
droid.stopSensing()#выключение сенсора
quit()#завершение скрипта
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Video: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru