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

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

Запись от Фаер размещена 12.05.2012 в 18:29
Показов 11780 Комментарии 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
Комментарии
 
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru