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

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

Запись от Фаер размещена 10.05.2012 в 23:25
Показов 29428 Комментарии 3

Пришла пора разобраться с организацией интерфейса программы. Но, как водится, начнём Мы с деталей: чтобы отобразить какой-либо виджет нужно применить функцию dialogShow() - аналог mainloop() в Python для Widows и Linux.
Кроме того, для получения значений действий пользователя используется функция dialogGetResponse(). Не забывайте, что обращение к функции производится через переменную, связанную с Вашим смартфоном!(Если быть более точным, это не функции, а методы).

На 1-м уроке я уже описывал функцию: getInput(). Однако её применение может привести к появлению предупреждений в панели сообщений. Чтобы этого избежать следует использовать функцию dialogGetInput(). Кроме простого ввода, имеется ввод в режиме пароля: dialogGetPassword(). Для более высокоуровневого взаимодействия с пользователем можно использовать функцию dialogCreateAlert() - она создаёт своего рода окно, к которому можно прикреплять другие виджеты. Их не так много, но вполне достаточно для "нормального" взаимодействия:

1. Кнопки:
dialogSetPositiveButtonText(); dialogSetNegativeButtonText(); dialogSetNeutralButtonText()

В скобках обязательно должна быть указана строка, которую Вы хотите прикрепить к кнопке, например "Ок" или "Cancel".
Вызов dialogGetResponse() вернёт словарь, следовательно обращаемся к параметру по имени. Результаты соответствуют назначению кнопок: Positive, Negative или Neutral.
Например:
Python
1
2
3
4
5
6
7
8
from android import Android
droid=Android()
droid.dialogCreateAlert()#создаём "окно"
droid.dialogSetPositiveButtonText('Yes')
droid.dialogSetNegativeButtonText('No')
droid.dialogShow()#выводим окно с кнопками на экран
s=droid.dialogGetResponse().result#ждём нажатия кнопки
print(s)
В результате Вы получите словарь, в котором присутствует только один элемент(под ключом 'which'), например:
Python
1
{'which':'positive'}#Вы нажали кнопку 'Yes'
2.Меню:

dialogSetItems(['Right', 'Left']) - в скобках должен быть список строк - параметров, которые Вы хотите добавить в меню.
Вызов dialogGetResponse() тоже вернёт словарь, но с индексом выбранного параметра меню (0(ноль) -первый параметр)

3. Меню с множественным набором (галочки):
dialogSetMultiChoiceItems(['first', 'second', 'third'])

Обратите внимание: данную функцию следует использовать в связке с кнопками, которые зафиксируют выбор параметров. Чтобы получить результат(выбор пользователя) используем функцию dialogGetSelectedItems(), которая вернёт список выбранных параметров.

4. Меню с единственным выбором(радио-кнопки):
dialogSetSingleChoiceItems(['north', 'south'])

Для получения результата выбора используем ту же dialogGetSelectedItems(), она так же вернёт список, в котором будет только один элемент(под номером "0"). Эту функцию тоже нужно использовать в связке с кнопками.

Вот более сложный виджет. Пишу сразу в скрипте, чтобы Вам понятней было:
Python
1
2
3
4
5
6
7
8
9
from android import Android
from time import sleep
droid=Android()
droid.dialogCreateHorizontalProgress('Название окна', 'Сообщение', 100)# создаём виджет "полоса загрузки"
droid.dialogShow()# отображаем виджет
for i in range(0, 99):
    sleep(0.1)# задаём "шаг" загрузки с привязкой ко времени
    droid.dialogSetCurrentProgress(x)# отмечаем прогресс на виджете "полоса загрузки"
droid.dialogDismiss()# закрываем виджеты
Кроме HorizontalProgress есть другой виджет загрузки: dialogCreateSpinnerProgress().

Ну и в заключение ещё две функции:
dialogCreateTimePicker() - окно установки времени. Чтобы получить результат ввода используем тот же dialogGetResponse() - получаем словарь(обращение по имени).
dialogCreateDatePicker() - окно установки даты. Результат аналогичен функции dialogCreateTimerPicker()

В функциях: dialogCreateSpinnerProgress(), dialogCreateHorizontalProgress(), dialogGetInput(), dialogGetPassword(), dialogCreateAlert() - в скобках следует передавать две строки: заголовок и сообщение.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Я сделал автозагрузку, как только доведу до идеала, выложу сюда новый шаблон, его редактирование останется прежним, но можно будет включить или выключить автозагрузку приложения.
    Запись от SergeyA размещена 24.05.2012 в 23:39 SergeyA вне форума
  2. Старый комментарий
    Вроде привёл в порядок, всё работает, протестировал не один раз.

    Скачать: [URL="http://ifolder.ru/30699931"]android_template[/URL]

    В шаблоне стандартно автозагрузка включена, для того что бы отключить автозагрузку, нужно открыть [B]AndroidManifest.xml[/B] любым текстовым редактором, найти эти сторки:

    [XML]
    <receiver
    android:enabled="true"
    android:name=".ScriptAutorun"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
    <action
    android:name="android.intent.action.BOOT_COMPLETED"/>
    <category
    android:name="android.intent.category.HOME" />
    </intent-filter>
    </receiver>
    [/XML]

    Вместо [B]android:enabled="true"[/B] вписать [B]android:enabled="false"[/B] и наоборот.
    Запись от SergeyA размещена 25.05.2012 в 02:28 SergeyA вне форума
  3. Старый комментарий
    Аватар для Фаер
    Работает!
    Запись от Фаер размещена 25.05.2012 в 18:10 Фаер вне форума
 
Новые блоги и статьи
Программный домашний кинотеатр
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru