13.1.13.4.2. Элементы управления со значением#
Это элементы управления, которые хранят настройку. Каждый несёт value, и Save записывает отредактированное value обратно в элемент управления. Таблица ниже – это быстрое сопоставление элемента управления с типом JSON, который он хранит; следующие далее разделы описывают каждый ключ.
Элемент управления | Сохраняет |
|---|---|
checkbox | логическое или целое |
combobox | выбранное значение или его индекс |
radio | выбранное значение или его индекс |
spinbox | целое |
doublespinbox | число (с плавающей точкой) |
slider | целое |
lineedit | строка |
Все элементы управления значениями также принимают общие ключи (name, label, tooltip, enabled); см. обзор. Элемент label отображается рядом с элементом управления (на самом поле для checkbox).
13.1.13.4.2.1. checkbox#
Переключатель вкл/выкл. При необходимости трёхпозиционный, для настроек, у которых есть «неустановленная» середина.
{ "type": "checkbox", "name": "draw_overlays", "label": "Draw Overlays", "value": true }
Аргументы:
label (строка) – текст, отображаемый рядом с флажком. Только обычный текст (в отличие от других элементов управления, чьи метки принимают форматированный текст).
tristate (логическое, по умолчанию
false) – разрешить третье, частично отмеченное состояние.value – начальное состояние. Двухпозиционное: логическое. Трёхпозиционное:
0(выкл),1(частично) или2(вкл).
Сохраняет: логическое для двухпозиционного флажка; целое 0, 1 или 2 для трёхпозиционного флажка.
13.1.13.4.2.2. combobox#
Выпадающее меню вариантов.
{
"type": "combobox",
"name": "resolution",
"label": "Resolution",
"options": ["QQVGA", "QVGA", "VGA"],
"values": ["qqvga", "qvga", "vga"],
"value": "qvga"
}
Аргументы:
options (массив строк) – элементы, отображаемые в меню.
values (массив) – необязательный параллельный массив значений для сохранения, по одному на каждую option. С values меню показывает
options[i], но сохраняетvalues[i]– поэтому пользователь видит «QVGA», в то время как файл хранит"qvga". Записи могут быть любого типа JSON. Без values элемент управления сохраняет вместо этого индекс выбранного элемента.value – начальный выбор. С values – запись, равная одному из values. Без values – индекс выбираемого элемента (по умолчанию
0).
Сохраняет: соответствующую запись values (любой тип), когда задан values; иначе выбранный индекс (целое).
13.1.13.4.2.3. radio#
Набор радиокнопок – одновременно виден один вариант, как у combobox, но полностью развёрнутый.
{
"type": "radio",
"name": "mode",
"label": "Mode",
"options": ["Idle", "Track", "Record"],
"values": ["idle", "track", "record"],
"value": "idle",
"orientation": "horizontal"
}
Аргументы:
options (массив строк) – по одной кнопке на запись.
values (массив) – необязательные значения для сохранения, по одному на каждую option, точно как для combobox. Без него элемент управления сохраняет выбранный индекс.
value – начальный выбор, сопоставляемый с values или используемый как индекс, как для combobox.
orientation (строка, по умолчанию
"vertical") –"horizontal", чтобы расположить кнопки в ряд, иначе в столбец.
Сохраняет: соответствующую запись values (любой тип) или выбранный индекс.
13.1.13.4.2.4. spinbox#
Числовое поле для целых чисел, со стрелками вверх/вниз.
{
"type": "spinbox",
"name": "server_port",
"label": "Port",
"value": 8080,
"min": 0,
"max": 65535,
"group_separator": true
}
Аргументы:
value (целое, по умолчанию
0) – начальное число.min (целое, по умолчанию
0или value, что меньше) – наименьшее допустимое значение.max (целое, по умолчанию
100или value, что больше) – наибольшее допустимое значение.step (целое, по умолчанию
1) – шаг увеличения/уменьшения.prefix (строка) – текст, отображаемый перед числом, например
"0x".suffix (строка) – текст, отображаемый после числа, например единица измерения вроде
" px".base (целое, по умолчанию
10) – основание системы счисления для отображения; установите16, чтобы показывать и редактировать число в шестнадцатеричном виде.group_separator (логическое, по умолчанию
false) – группировать цифры разделителями разрядов тысяч.special_value_text (строка) – текст, отображаемый вместо числа, когда оно находится на min, например показать «Off» при
0.
Сохраняет: целое.
13.1.13.4.2.5. doublespinbox#
Числовое поле для десятичных дробей.
{
"type": "doublespinbox",
"name": "sensitivity",
"label": "Sensitivity",
"value": 50.0,
"min": 0,
"max": 100,
"step": 0.5,
"decimals": 1,
"suffix": " %"
}
Аргументы:
value (число, по умолчанию
0) – начальное число.min (число, по умолчанию
0или value, что меньше) – наименьшее допустимое значение.max (число, по умолчанию
100или value, что больше) – наибольшее допустимое значение.decimals (целое, по умолчанию
2) – сколько цифр показывать после десятичной точки.step (число, по умолчанию
1.0) – шаг увеличения/уменьшения.prefix (строка) – текст, отображаемый перед числом, например
"max ".suffix (строка) – текст, отображаемый после числа, например единица измерения вроде
" %".group_separator (логическое, по умолчанию
false) – разделители разрядов тысяч.special_value_text (строка) – текст, отображаемый, когда число находится на min.
Сохраняет: число (с плавающей точкой).
13.1.13.4.2.6. slider#
Горизонтальный ползунок с живым числовым индикатором рядом с ним.
{
"type": "slider",
"name": "brightness",
"label": "Brightness",
"value": 50,
"min": 0,
"max": 100,
"step": 1,
"suffix": " %",
"ticks": 25
}
Аргументы:
value (целое, по умолчанию
0) – начальная позиция.min (целое, по умолчанию
0или value, что меньше) – нижний конец дорожки.max (целое, по умолчанию
100или value, что больше) – верхний конец дорожки.step (целое, по умолчанию
1) – шаг с клавиатуры и при перетаскивании; перетаскивания привязываются к ближайшему кратному.prefix (строка) – текст, отображаемый перед числовым индикатором рядом с ползунком, например
"x".suffix (строка) – текст, отображаемый после индикатора, например
" %".ticks (целое) – расстояние между делениями, отрисованными под дорожкой.
Сохраняет: целое.
13.1.13.4.2.7. lineedit#
Однострочное текстовое поле, для имён, паролей, адресов и тому подобного.
{
"type": "lineedit",
"name": "hostname",
"label": "Hostname",
"value": "openmv-cam",
"placeholder": "letters, digits, dashes",
"regex": "[A-Za-z0-9-]+",
"clear_button": true
}
Аргументы:
value (строка, по умолчанию
"") – начальный текст.placeholder (строка) – серый подсказывающий текст, отображаемый, пока поле пусто.
max_length (целое) – максимальное число символов, которое примет поле.
mask (строка) – входная маска, которая фиксирует компоновку того, что можно ввести, например
"000.000.000.000;_"для адреса IPv4. См. Input masks ниже.regex (строка) – регулярное выражение, которому должна соответствовать вся запись. См. Regular expressions ниже.
clear_button (логическое, по умолчанию
false) – показать небольшую кнопку очистки внутри поля.password (логическое, по умолчанию
false) – скрыть текст точками и добавить кнопку-глаз для его раскрытия.
Сохраняет: строку.
И mask, и regex ограничивают то, что примет поле, с противоположных сторон – маска фиксирует компоновку текста, регулярное выражение ограничивает его содержимое. Поле с любым из них – единственный элемент управления, который может заблокировать сохранение: если его текст неполон или не соответствует, редактор перечисляет поле по его label и отказывается сохранять, пока оно не будет исправлено или очищено. Используйте на поле не более одного из этих двух.
13.1.13.4.2.7.1. Входные маски#
mask фиксирует поле символ за символом: разделители прорисованы за пользователя, который лишь заполняет пропуски. Каждый символ маски обозначает одну позицию ввода:
9– обязательная цифра;0– необязательная цифра.A/a– обязательная / необязательная буква.N/n– обязательная / необязательная буква или цифра.X/x– обязательный / необязательный символ любого рода.H/h– обязательная / необязательная шестнадцатеричная цифра.>/<– переводить следующие далее буквы в верхний / нижний регистр;!останавливает преобразование.
Любой другой символ – . в 000.000.000.000, - в серийном номере – является буквальным разделителем: он размещается автоматически и пропускается по мере ввода пользователем. Чтобы использовать символ маски как буквальный, поставьте перед ним обратную косую черту.
; ближе к концу задаёт заполнитель, отображаемый для незаполненных позиций: "000.000.000.000;_" показывает пустое поле как ___.___.___.___. Опустите его – и пропуски будут пробелами. Пока любая обязательная позиция всё ещё пуста, запись неполна, что блокирует сохранение.
13.1.13.4.2.7.2. Регулярные выражения#
regex проверяет содержимое, а не компоновку, и лучше подходит, когда правило – «эти символы, этот шаблон», а не фиксированное поле. Вся запись должна соответствовать – выражение привязано к обоим концам, поэтому "[A-Za-z0-9-]+" означает только буквы, цифры и дефисы от начала до конца, а не просто «содержит один».
Проверка выполняется при каждом нажатии клавиши. Символ принимается, пока текст ещё может вырасти до полного соответствия, и отклоняется в тот момент, когда уже не может, поэтому пользователь никогда не сможет набрать что-то недопустимое. Поле считается допустимым – и сохранение разрешено – только когда всё выражение соответствует; частичная запись на пути к этому остаётся на месте, но блокирует сохранение, пока не будет завершена.
Чтобы построить и протестировать шаблон, regex101.com поясняет каждую часть по мере ввода – установите его вариант в PCRE2, синтаксис, который использует редактор.