Как получить подтверждение пользователя¶
Библиотека ram.widgets предоставляет ряд функций-примитивов для отображения диалоговых окон.
Этот документ описывает использование функции AskViaButtons, используемой для получения подтверждений пользователя.
При использовании псевдографического интерфейса на основе SnackUI
пользователю выводится диалоговое окно с пояснительным текстом и две кнопки для выбора действия.
Если вопрос пользователю предполагает три и более вариантов ответа, следует воспользоваться функцией SingleChoice.
-
ram.process.AskViaButtons(header, text, yesButtonText=None, noButtonText=None) Получение подтверждения пользователя. В случае согласия пользователя возвращает – True, в ином случае False.
Parameters: - header – Строка, Заголовок диалогового окна.
- text – Строка, Пояснительный текст вопроса.
- yesButtonText – Строка, Надпись на кнопке согласия (кнопке по умолчанию).
- noButtonText – Строка, Надпись на кнопке отказа (кнопка не по умолчанию).
Рекомендации по оформлению подтверждений¶
Последним предложением пояснительного текста для пользователю следует поставить развернутый вопрос.
Если вопрос к пользователю связан с подтверждением изменения состояния или подтверждением данных введенных пользователем,
следует использовать форму вопроса предполагающую возможные ответы – “Да” или “Нет”.
В этом случае значения для параметров yesButtonText и noButtonText должны быть опущены,
будут использованы значение по умолчанию “Yes” и “No”:
if ram.widgets.AskViaButtons(
"Select time zone",
"Time zone will be set to `%s`\n\n"
"Is that correct?" % timezone,
):
...
if ram.widgets.AskViaButtons(
"Enable the feature",
"Would you like to enable the feature?",
):
...
При форматировании кода вызова функции AskViaButtons рекомендуется имитировать диалоговое окно отображаемое пользователю.
Для этого задание аргументов вызова AskViaButtons вкладывается между строками с обрамляющими вызов скобками и
дополнительно выделяются стандартным отступом.
Первая строка задает заголовок, последующие строки задают пояснительный текст. При этом можно воспользоваться свойством интерпретатора конкатенировать строки разделенные пробелами и переносами строк. На последней строке перечисляются варианты выбора пользователя:
if ram.widgets.AskViaButtons(
"Set state",
"Configurable object could be set to `running` and `stopped` states."
"Depending on state object is able to process data or not.\n\n"
"Whice state would you like to set for object?",
"Running", "Stopped",
):
...
Если вопрос к пользователю связан с выполнением действия
следует использовать форму вопроса предполагающую возможные ответы – “<Выполнить действие>” и “Отменить”.
В этом случае значение параметра yesButtonText должно соотвествовать названию действия,
а значение параметра noButtonText должно быть опущено, будет использовано значение по умолчанию “Cancel”:
if ram.widgets.AskViaButtons(
"Delete item from list?",
"Would you like to delete item from list?",
"Delete",
):
...
Помимо пояснительного текста для пользователя иногда бывает необходимо ясно подсказать пользователю, что его выбор может быть изменен в другой момент или выбранное решение не критично по отношению к той или иной функциональности. В этом случае следует перед завершающим вопросом добавить строку с подсказкой начинающейся со слова “HINT:”.
Если же необходимо подчеркнуть, что выбор пользователя несет критические и/или необратимые последствия, то следует перед завершающим вопросом добавить строку с предупреждение начинающимся со слова “WARNING:”:
В рамках одного пояснительно текста может быть использовано несколько подсказок или предупреждений. Отдельные подсказки и предупреждения следует выделять обрамляя их пустыми строками.
if ram.widgets.AskViaButtons(
"Download bases?",
"In order to provide security actual bases should be used.\n\n"
"HINT: It's possible to download bases later.\n\n"
"Do you want to download bases now?",
"Download",
):
...
Если конфигурация установленная пользователем некорректна или неоптимальна следует предупредить пользователя об этом.
В этом случае в качестве значения параметра yesButtonText следует использовать – “Go back”,
а в качестве значения параметра noButtonText – “Continue”/”Save and continue”:
if ram.widgets.AskViaButtons(
"Incorrect configution",
"Database applications require fast disk throughput and low disk latency."
"In order to meet these requirements databases should be placed onto separate disk drive.\n\n",
"WARNING: It's strongly recommended to use separate disk drive for database!\n\n"
"WARNING: It's not possible to change this setting later!\n\n"
"Would you like to go back and select separate disk drive for database?",
"Go back", "Continue",
):
...
Помимо вышеперечисленных рекомендаций по оформлению подтверждений пользователя, следует учитывать общие рекомендации по использованию двойных кавычек для текста текста видимого пользователю.