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

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

Запись от Фаер размещена 12.05.2012 в 18:29
Показов 11804 Комментарии 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
Комментарии
 
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru