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

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

Запись от Фаер размещена 10.05.2012 в 23:25
Показов 29390 Комментарии 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 Фаер вне форума
 
Новые блоги и статьи
Кредитный калькулятор
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). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru