Свойства стилей

Свойства стиля, связанные со стилями, управляют отображением Отображаемых (Displayables). Свойства стиля могут быть заданы как без префикса, в этом случае они применяются ко всем состояниям отображаемого, так и с префиксом, который ограничивает свойство определенным количеством состояний.

Префиксы свойств стиля

Применение префикса к свойству стиля позволяет отображаемому изменять свой внешний вид в зависимости от состояния фокуса или выбора. Например, кнопка может изменять свой цвет при наведении на нее курсора мыши или чтобы показать, что представленный ею выбор является текущим.

Отображаемое может находиться в пяти состояниях.

insensitive

Используется, когда пользователь не может взаимодействовать с отображаемым.

idle

Используется, когда отображаемое не находится в фокусе и не выбрано.

hover

Используется, когда отображаемое находится в фокусе, но не выбрано.

selected_idle

Используется, когда отображаемое не находится в фокусе, но выбрано.

selected_hover

Используется, когда отображаемое находится в фокусе и выбрано.

Отображаемые типа Button и Bar (и их варианты) обновляют свое состояние и состояние своих дочерних элементов в ответ на события. Например, когда пользователь наводит курсор мыши на невыбранную кнопку, она и все ее дочерние элементы перейдут в состояние hover.

Префиксы свойств стиля позволяют устанавливать свойства стиля для разных состояний. Существует система наследования, так что один префикс может подразумевать установку свойства для нескольких состояний.

Правила наследования:

префикс

подразумеваемые префиксом состояния

(без префикса)

insensitive, idle, hover, selected_idle, selected_hover

idle_

idle, selected_idle

hover_

hover, selected_hover

selected_

selected_idle, selected_hover

insensitive_

insensitive

selected_idle_

selected_idle

selected_hover_

selected_hover

selected_insensitive_

selected_insensitive

Продемонстрируем это на примере текстовой кнопки. Текстовые кнопки по умолчанию используют два стиля: button для самой кнопки и button_text для текста внутри кнопки. Свойство стиля background устанавливает фон кнопки, а свойство color — цвет текста.:

# Фон кнопки серый в состоянии insensitive, светло-
# синий при наведении (hover) и темно-синий в остальных случаях.
style button:
    background "#006"
    insensitive_background "#444"
    hover_background "#00a"

# Текст кнопки желтый, когда она выбрана (selected), и белый
# в остальных случаях.
style button_text:
    color "#fff"
    selected_color "#ff0"

Значения свойств стиля

Каждое свойство стиля ожидает данные определенного типа. Многие из них являются стандартными типами Python, но некоторые являются новыми. Ниже приведены описания новых типов значений, которые может ожидать свойство стиля.

position

Позиции используются для указания местоположения относительно верхнего левого угла содержащей области. (Для размещения и размера содержащей областью является компоновка (layout), в которой находится отображаемое, если она задана, или экран в противном случае. Для якорей (anchors) содержащей областью является размер самого отображаемого.)

Способ интерпретации значения позиции зависит от типа этого значения:

int (например, 0, 1, 37 или 42)

Целое число интерпретируется как количество пикселей от левой или верхней стороны содержащей области.

float (например, 0.0, 0.5 или 1.0)

Число с плавающей точкой интерпретируется как доля от содержащей области. Например, 0.5 — это точка на полпути между сторонами содержащей области, а 1.0 — это на правой или нижней стороне.

absolute(value, /)

Например, absolute(100.25) или absolute(a+b), где a и b могут быть как float, так и int.

Число absolute интерпретируется как количество пикселей от левого или верхнего края экрана при использовании рендеринга с субпиксельной точностью.

position(absolute, relative, /)

Например, position(-10, .5).

Комбинация absolute, которое будет рассматриваться как абсолютная позиция, и relative, которое будет рассматриваться как относительная позиция, как описано выше. Оба компонента складываются для формирования конечной позиции.

Всегда следует передавать оба параметра, иначе результаты могут быть непредсказуемыми.

displayable

Любое отображаемое. Если отображаемое содержит подстановку "[prefix_]", выполняется поиск по префиксу, как описано ниже.

color

Цвета в Ren'Py можно выразить в виде строк, начинающихся со знака решетки (#), за которым следует тройка или четверка шестнадцатеричных значений, где каждый из трех или четырех элементов состоит из одного или двух шестнадцатеричных символов кода цвета.

В тройке компоненты представляют красный, зеленый и синий цвета. В четверке компоненты представляют красный, зеленый, синий и альфа-канал. Например:

  • "#f00" и "#ff0000" представляют непрозрачный красный цвет.

  • "#0f08" и "#00ff0080" представляют полупрозрачный зеленый цвет.

Цветовые тройки такие же, как и в HTML.

Цвета также можно представить в виде кортежа из 4 компонентов, где 4 компонента — это целые числа от 0 до 255. Компоненты соответствуют красному, зеленому, синему и альфа-каналу, в указанном порядке.

  • (0, 0, 255, 255) представляет непрозрачный синий цвет.

Наконец, цвета могут быть экземпляром класса Color.

Список всех свойств стиля

Свойства стиля управляют внешним видом различных отображаемых. Не все свойства стиля применимы ко всем отображаемым, поэтому мы разделили их на группы.

Свойства стиля позиции

Эти свойства применяются ко всем отображаемым и в основном управляют положением отображаемого внутри области, выделенной ему компоновкой (layout), или на экране, если оно не находится внутри компоновки.

alt -  string or None

Альтернативный текст, используемый для отображаемого при включенном самоозвучивании. См. раздел Самоозвучивание для получения дополнительной информации.

xpos -  position

Положение отображаемого относительно левой стороны содержащей области.

ypos -  position

Положение отображаемого относительно верхней стороны содержащей области.

pos -  tuple of (position, position)

Эквивалентно установке xpos в первый компонент кортежа, а ypos — во второй компонент кортежа.

xanchor -  position

Положение якоря относительно левой стороны отображаемого.

yanchor -  position

Положение якоря относительно верхней стороны отображаемого.

Если отображаемое является Text(), то у этого свойства есть одно специальное значение. Если свойство установлено в renpy.BASELINE, якорь устанавливается на базовую линию первой строки текста.

anchor -  tuple of (position, position)

Эквивалентно установке xanchor в первый компонент кортежа, а yanchor — во второй компонент кортежа.

xalign -  float

Эквивалентно установке xpos и xanchor в одно и то же значение. Это приводит к размещению отображаемого в относительном положении на экране, где 0.0 — это левая сторона, 0.5 — центр, а 1.0 — правая сторона.

yalign -  float

Эквивалентно установке ypos и yanchor в одно и то же значение. Это приводит к размещению отображаемого в относительном положении на экране, где 0.0 — это верх, 0.5 — центр, а 1.0 — низ.

align -  tuple of (float, float)

Эквивалентно установке xalign в первый компонент кортежа, а yalign — во второй.

xcenter -  position

Эквивалентно установке xpos в значение этого свойства, а xanchor в 0.5.

ycenter -  position

Эквивалентно установке ypos в значение этого свойства, а yanchor в 0.5.

xycenter -  tuple of (position, position)

Эквивалентно установке xcenter в первый компонент кортежа, а ycenter — во второй.

xoffset -  int

Задает количество пикселей, которое добавляется к горизонтальной позиции, вычисленной с использованием xpos и xalign.

yoffset -  int

Задает количество пикселей, которое добавляется к вертикальной позиции, вычисленной с использованием ypos и yalign.

offset -  tuple of (int, int)

Эквивалентно установке xoffset в первый компонент кортежа, а yoffset — во второй компонент кортежа.

xmaximum -  int

Указывает максимальный горизонтальный размер отображаемого в пикселях.

ymaximum -  int

Указывает максимальный вертикальный размер отображаемого в пикселях.

maximum -  tuple of (int, int)

Эквивалентно установке xmaximum в первый компонент кортежа, а ymaximum — во второй.

xminimum -  int

Устанавливает минимальную ширину отображаемого в пикселях. Работает только с отображаемыми, которые могут изменять свой размер.

yminimum -  int

Устанавливает минимальную высоту отображаемого в пикселях. Работает только с отображаемыми, которые могут изменять свой размер.

minimum -  tuple of (int, int)

Эквивалентно установке xminimum в первый компонент кортежа, а yminimum — во второй.

xsize -  int or float

Эквивалентно установке xminimum и xmaximum в одно и то же значение. Это приводит к установке ширины отображаемого. Если размер является числом с плавающей точкой (float), он будет относительным к ширине содержащей области.

ysize -  int or float

Эквивалентно установке yminimum и ymaximum в одно и то же значение. Это приводит к установке высоты отображаемого. Если размер является числом с плавающей точкой (float), он будет относительным к высоте содержащей области.

xysize -  tuple of (int or float, int or float)

Эквивалентно установке xsize в первый компонент кортежа, а ysize — во второй компонент.

xfill -  boolean

Если true, отображаемое будет расширяться, чтобы заполнить все доступное горизонтальное пространство. Если false, оно будет лишь достаточно большим, чтобы вместить свои дочерние элементы.

Это работает только для отображаемых, которые могут изменять свой размер.

yfill -  boolean

Если true, отображаемое будет расширяться, чтобы заполнить все доступное вертикальное пространство. Если false, оно будет лишь достаточно большим, чтобы вместить свои дочерние элементы.

Это работает только для отображаемых, которые могут изменять свой размер.

area -  tuple of (int, int, int, int)

Кортеж интерпретируется как (xpos, ypos, width, height). Пытается расположить отображаемое так, чтобы его верхний левый угол находился в xpos и ypos, а его размер был width и height.

Это достигается путем установки свойств xpos, ypos, xanchor, yanchor, xmaximum, ymaximum, xminimum, yminimum, xfill и yfill в соответствующие значения.

Это будет работать не со всеми отображаемыми и не со всеми компоновками (layouts).

mipmap -  boolean or None

Это свойство управляет тем, будут ли текстуры, созданные этим отображаемым, иметь мип-уровни (mipmapped). Это применяется только к определенным отображаемым, включая Text(), Movie(), и переходы (dissolves).

Если None, значение по умолчанию берется из переменных конфигурации, таких как config.mipmap_text, config.mipmap_movies и config.mipmap_dissolves.

Свойства стиля текста

antialias -  boolean

Если True (по умолчанию), текст шрифта TrueType будет отображаться со сглаживанием (anti-aliased).

adjust_spacing -  boolean or str

Если True, Ren'Py будет корректировать межсимвольный интервал текста с разрешением отрисовки (drawable-resolution), чтобы он соответствовал интервалу текста, отрисованного с виртуальным разрешением, гарантируя, что размер рамок и других контейнеров с текстом не изменится.

Если установлено в False, размер текста не будет меняться, но создатель должен сам убедиться, что для размещения текста достаточно места при любом размере окна.

Если установлено в строку "horizontal", текст будет корректироваться только по горизонтали. Если в "vertical", то только по вертикали.

По умолчанию True для большинства текстов, но False для текста в input.

altruby_style -  style or None

Если не None, это должен быть объект стиля. Стиль, который используется для альтернативного руби-текста.

axis -  dict or None

Позволяет задавать оси вариативного шрифта. Если не None, это должен быть словарь, сопоставляющий имена осей со значениями. Например:

style default:
    font "VariableFont.ttf"
    axis { "weight" : 500, "width" : 95 }
black_color -  color

При рендеринге шрифта на основе изображений черный цвет будет заменен на этот цвет. Не влияет на шрифты TrueType.

Может быть None в случае руби/фуригана-текста, чтобы использовать тот же цвет, что и у родительского текста.

bold -  boolean

Если True, шрифт отображается жирным начертанием. Для шрифта TrueType это обычно включает синтетическое увеличение веса шрифта. Это также может привести к переназначению шрифта с помощью config.font_replacement_map.

caret -  displayable or None

Если не None, это должно быть отображаемое. Виджет ввода будет использовать его в качестве каретки в конце текста. Если None, в качестве каретки используется мигающая линия шириной 1 пиксель.

color -  color

Цвет, которым отображается текст. При использовании шрифта TrueType шрифт отображается этим цветом. При использовании шрифта на основе изображений белый цвет заменяется на этот цвет.

Может быть None в случае руби/фуригана-текста, чтобы использовать тот же цвет, что и у родительского текста.

emoji_font -  string

Шрифт, используемый для отображения символов Emoji. Он автоматически используется, когда встречается последовательность из одного или нескольких Emoji и не используется тег шрифта.

first_indent -  int

Величина отступа первой строки текста в абзаце, в пикселях.

font -  string

Строка, задающая имя шрифта, используемого для отображения текста.

Для файла шрифта TrueType это обычно имя файла, содержащего шрифт (например, "DejaVuSans.ttf"). Чтобы выбрать второй шрифт в коллекции, можно добавить префикс в виде номера и знака @ (например, "0@font.ttc" или "1@font.ttc"). Для шрифта на основе изображений это должно быть имя, использованное для регистрации шрифта.

font_features -  dict or None

Если не None, это должен быть словарь, сопоставляющий функции разметки OpenType со значениями. Ключами словаря должны быть четырехсимвольные теги функций OpenType, а значениями - булевы. Например:

style default:
    font "SomeFont.ttf"
    font_features { "liga" : True, "smcp" : True, "calt" : False }

Список функций разметки можно найти здесь.

hinting -  str

Управляет хинтингом шрифта. Должна быть одна из следующих строк:

"auto"

(по умолчанию), принудительно использует авто-хинтер Freetype.

"auto-light"

Принудительно использует авто-хинтер Freetype в "лёгком" режиме, который выполняет хинтинг только по вертикали.

"bytecode"

Использует информацию о байткод-хинтинге, найденную в шрифте.

"none"

Не выполняет хинтинг шрифта.

Также может быть True, и в этом случае значение берется из config.font_hinting.

Это кортеж из трех функций, связанных с гиперссылками в тексте.

Первый элемент — функция стиля гиперссылки. При вызове с одним аргументом (аргументом гиперссылки) она должна возвращать объект стиля для использования с гиперссылкой, например, style.hyperlink_text. Обратите внимание, что объект стиля — это не строка.

Второй элемент — функция клика по гиперссылке. Эта функция вызывается, когда пользователь выбирает гиперссылку. Если она возвращает значение, отличное от None, взаимодействие возвращает это значение.

Третий элемент — функция фокуса гиперссылки. Эта функция вызывается с аргументом гиперссылки, когда она получает фокус, и с None, когда она его теряет. Если она возвращает значение, отличное от None, взаимодействие возвращает это значение.

instance -  string or None

При использовании вариативного шрифта это может быть строка, задающая именованный экземпляр шрифта. Например, если у шрифта есть экземпляр "Bold", можно установить это свойство в "Bold", чтобы его использовать.

italic -  boolean

Если true, текст будет отображен курсивом. Для шрифта TrueType это обычно включает синтетическое увеличение наклона шрифта. Это также может привести к переназначению шрифта с помощью config.font_replacement_map.

justify -  boolean

Если True, между словами вставляются дополнительные пробелы, чтобы левый и правый края каждой строки были выровнены. Это не применяется к последней строке абзаца.

kerning -  float

Коррекция кернинга, количество пикселей пробела, которое добавляется между каждой парой символов. (Может быть отрицательным для уменьшения расстояния между символами).

language -  string

Управляет семейством языков, используемым для разбиения текста на строки и для некоторых других преобразований текста. Допустимые значения:

"unicode" (по умолчанию)

Использует алгоритм переноса строк Unicode, который подходит для большинства языков.

"japanese-strict"

Форматирует японский текст в "строгом" стиле. Он запрещает разрывы перед малой каной и знаками долготы.

"japanese-normal"

Форматирует японский текст в "нормальном" стиле. Он разрешает разрывы перед малой каной, знаками долготы и определенными дефисами.

"japanese-loose"

Форматирует японский текст в "свободном" стиле. Разрешает разрывы перед малой каной, знаками долготы, знаками итерации, неразделимыми символами, центрированными знаками препинания и постфиксами; и разрешает разрывы перед префиксами.

"korean-with-spaces"

Используется для корейского текста, разделенного пробелами. Это предотвращает перенос строк между соседними корейскими символами.

"thaic90"

Используется для тайского текста, отображаемого шрифтами, которые поддерживают кодировку C90 для тайского языка. Объединяет группы символов в одиночные глифы, что позволяет лучше отображать знаки гласных и тона. Для переноса строк используется алгоритм unicode.

"western"

Разрешает разрыв строки только по пробелам. Подходит для большинства языков.

"anywhere"

Разрешает разрыв в любом месте без руби.

Три режима переноса для японского языка взяты из модуля текста CSS3.

layout -  string

Управляет тем, как слова распределяются по строкам. Допустимые значения:

"tex" (по умолчанию)

Использует алгоритм переноса строк Кнута-Пласса, который пытается минимизировать разницу в длине всех строк, кроме последней.

"subtitle"

Использует алгоритм переноса строк Кнута-Пласса, но пытается выровнять длину всех строк.

"greedy"

Слово помещается на первую строку, на которой для него есть место.

"nobreak"

Не выполнять перенос строк.

line_leading -  int

Количество пикселей пробела, которое добавляется над каждой строкой.

line_overlap_split -  int

В режиме медленного текста, если две строки перекрываются, это количество пикселей перекрытия выделяется для верхней строки. Увеличьте это значение, если нижние части символов верхней строки обрезаются.

line_spacing -  int

Количество пикселей пробела, которое добавляется под каждой строкой.

min_width -  int

Устанавливает минимальную ширину каждой строки текста. Если строка короче этого значения, она дополняется до этой длины, а textalign используется для указания, где размещать это дополнение.

newline_indent -  boolean

Если true, отступ first_indent используется после каждого символа новой строки в строке. В противном случае используется отступ rest_indent.

outlines -  list of tuple of (int, color, int, int)

Это список обводок, которые рисуются позади текста. Каждый кортеж задает обводку, и обводки рисуются от задней к передней.

Список содержит кортежи (size, color, xoffset, yoffset). size - это величина, на которую расширяется шрифт, в пикселях. color - это цвет обводки. xoffset и yoffset - это смещение обводки, в пикселях.

Функциональность обводки также можно использовать для создания падающих теней для шрифтов, указав size равным 0 и ненулевые смещения.

По умолчанию size, xoffset и yoffset масштабируются вместе с текстом. Если они заданы с типом absolute, они не масштабируются. Например:

style default:
    outlines [ (absolute(1), "#000", absolute(0), absolute(0)) ]

всегда будет создавать границу шириной 1 пиксель.

Обводки работают только со шрифтами TrueType. Обводки работают только при применении ко всему отображаемому Text. Они не работают при применении к гиперссылке, текстовому тегу или другому методу, который применяется только к части текста.

outline_scaling -  string

Это определяет, как размеры и смещения обводки масштабируются при масштабировании окна.

"linear"

(по умолчанию), лучше всего подходит для текста с толстыми обводками. Коэффициент масштабирования окна применяется к размеру обводки, а затем округляется до целого числа. Это выглядит лучше для толстых обводок, но концентрические обводки схожей толщины могут стать неразличимыми.

Итоговая ширина всегда не менее 1 пикселя.

"step"

Лучше всего подходит для текста, использующего тонкие обводки, и текста с несколькими обводками. Коэффициент масштабирования окна округляется до целого числа в меньшую сторону и применяется к размеру и смещениям обводки. Это гарантирует, что несколько обводок масштабируются вместе, без риска перекрытия друг другом, но это дает разные визуальные результаты в зависимости от размера игрового окна.

Коэффициент масштабирования окна всегда больше 1.

prefer_emoji -  boolean

Некоторые символы unicode имеют как Emoji, так и не-Emoji представление. Это свойство стиля выбирает, будет ли таким символам дано представление Emoji.

reading_order -  string

Это свойство управляет тем, как текст представляется для чтения при включенной поддержке RTL. Основное применение — влияние на нейтральные по направлению строки, например, состоящие исключительно из знаков препинания.

None

(по умолчанию), порядок чтения будет определяться на основе текста. Большинство нейтральных строк будут рассматриваться как слева-направо (left-to-right).

"ltr"

Принудительно устанавливает представление слева-направо, даже если строка преимущественно состоит из последовательностей RTL-символов.

"rtl"

Принудительно устанавливает представление справа-налево, даже если строка преимущественно состоит из последовательностей LTR-символов.

"wltr"

Предпочитает представление слева-направо, но переключится на справа-налево, если это имеет больше смысла для текущего текста. Полезно для влияния на строки, состоящие только из знаков препинания, такие как "..!".

"wrtl"

Предпочитает представление справа-налево, но переключится на слева-направо, если это имеет больше смысла для текущего текста. Полезно для влияния на строки, состоящие только из знаков препинания, такие как "..!".

rest_indent -  int

Указывает количество пикселей, на которое отступают вторая и последующие строки в абзаце.

ruby_line_leading -  int

Количество пикселей пробела, которое добавляется над каждой строкой, содержащей руби-текст. Это в дополнение к line_leading.

ruby_style -  style or None

Если не None, это должен быть объект стиля. Стиль, который используется для руби-текста.

shaper -  "harfbuzz" or "freetype".

Шейпер (shaper), используемый для текста. Должен быть одним из "harfbuzz" или "freetype". Шейпер harfbuzz более функционален, но работает только в Ren'Py 8, в то время как "freetype" работает и в Ren'Py 7.

Шейпер принимает последовательность символов и превращает ее в последовательность позиционированных глифов. Это используется для таких вещей, как лигатуры, индийские/брахмические языки и комбинирование эмодзи.

size -  int

Размер шрифта на экране. Хотя номинально это значение в пикселях, файлы шрифтов могут иметь творческие интерпретации этого значения.

slow_abortable -  boolean

Если True, щелчок, который достигает объекта Text, приведет к прерыванию медленного вывода текста, что означает, что оставшийся текст будет отображен мгновенно.

slow_cps -  int or True

Если число, показывает текст со скоростью указанного количества символов в секунду. Если True, показывает текст со скоростью, взятой из настройки "Скорость текста".

slow_cps_multiplier -  float

Скорость текста умножается на это число. Это можно использовать, чтобы персонаж говорил быстрее, чем обычно.

strikethrough -  boolean

Если True, через текст проводится линия (зачеркивание).

textalign -  float

Используется, когда строка короче ширины отображаемого текста. Определяет, какая часть дополнительного пространства размещается слева от текста. (и, следовательно, выравнивание текста).

0.0 даст выравнивание по левому краю, 0.5 — по центру, а 1.0 — по правому краю.

underline -  boolean

Если True, к тексту будет добавлено подчеркивание.

vertical -  boolean

Если True, текст будет отображаться вертикально.

Есть несколько оговорок:

  • Если shaper установлен в "freetype", вертикальная компоновка, скорее всего, будет некорректной.

  • Harfbuzz преобразует горизонтальные формы в вертикальные, если эти формы присутствуют в шрифте.

  • Символы будут располагаться сверху вниз, справа налево, но не будут повернуты. Это означает, что горизонтальные символы будут расположены один над другим.

  • Если информация о вертикальном тексте отсутствует в шрифте, она будет синтезирована, но может быть неверной. В целом, идеографический текст работает лучше, чем неидеографический.

Свойства стиля окна

Свойства окна используются для определения внешнего вида окон, рамок и кнопок. Свойства полей (margin) также являются частью этой группы.

background -  displayable or None

Отображаемый элемент (displayable), который используется в качестве фона окна. Часто это Frame(), что позволяет фону масштабироваться вместе с размером окна.

Если None, фон не рисуется, но другие свойства функционируют так, как если бы фон присутствовал.

foreground -  displayable or None

Если не None, этот отображаемый элемент рисуется поверх содержимого окна.

left_padding -  int

Расстояние в пикселях между фоном и левой стороной содержимого окна.

right_padding -  int

Расстояние в пикселях между фоном и правой стороной содержимого окна.

xpadding -  int

Эквивалентно установке одинаковых значений для left_padding и right_padding.

top_padding -  int

Расстояние в пикселях между фоном и верхней стороной содержимого окна.

bottom_padding -  int

Расстояние в пикселях между фоном и нижней стороной содержимого окна.

ypadding -  int

Эквивалентно установке одинаковых значений для top_padding и bottom_padding.

padding -  tuple

При задании кортежа из двух элементов эквивалентно установке xpadding и ypadding. При задании кортежа из четырёх элементов эквивалентно установке left_padding, top_padding, right_padding и bottom_padding.

size_group -  string or None

Если не None, это должна быть строка. Ren'Py будет отрисовывать все окна с одинаковым значением size_group в одном и том же размере.

modal -  boolean or callable

Если True, окно считается модальным. События перестанут распространяться через слои, пока курсор мыши находится в пределах окна или кнопки. Если False, окно не является модальным.

Это также может быть вызываемый объект (callable). Если это так, он вызывается с параметрами (ev, x, y, w, h), где ev — это событие pygame или None для обозначения общего события мыши; x и y — координаты относительно окна, а w и h — ширина и высота окна. Если вызываемый объект возвращает true, окно считается модальным. Если возвращает false — нет.

Свойства стиля кнопки

child -  displayable or None

Если не None, это отображаемый элемент, который заменяет дочерний элемент кнопки. Например, это свойство (как insensitive_child) можно использовать, чтобы заменить содержимое неактивной кнопки изображением, которое указывает на то, что кнопка заблокирована.

hover_sound -  string

Звук, который проигрывается, когда кнопка получает фокус.

activate_sound -  string

Звук, который проигрывается при активации (нажатии) кнопки. Он также проигрывается при активации полосы (bar) или перетаскиваемого элемента (drag).

mouse -  string

Стиль курсора мыши, который используется, когда кнопка находится в фокусе. Должен быть одним из стилей в config.mouse.

focus_mask -  multiple

Маска, используемая для контроля того, какие части кнопки могут получать фокус и, следовательно, быть нажатыми. Тип этого свойства определяет, как оно интерпретируется.

Displayable

Области отображаемого элемента, которые не являются прозрачными, приводят к тому, что кнопка получает фокус.

True

Сама кнопка используется в качестве отображаемого элемента (таким образом, непрозрачные области кнопки приводят к тому, что она получает фокус).

callable

Если передан не-displayable вызываемый объект (например, функция, метод или объект с методом __call__), он вызывается с двумя аргументами: смещениями x и y от верхнего левого угла отображаемого элемента.

Если функция при вызове с двумя аргументами возвращает вызываемый объект, тот, в свою очередь, вызывается с четырьмя аргументами — смещениями x и y, а также шириной и высотой отображаемого элемента.

Если функция возвращает true, отображаемый элемент получает фокус.

None

Если задано None, фокус может получить вся кнопка.

keyboard_focus -  boolean

Если True (по умолчанию), эта кнопка может получить фокус через механизм фокуса клавиатуры, если она вообще может быть сфокусирована. Если False, механизм фокуса клавиатуры пропустит эту кнопку. (Механизм фокуса клавиатуры используется клавиатурами и клавиатуроподобными устройствами, такими как геймпады.)

keyboard_focus_insets -  (int, int, int, int) or None

Если не None, это должен быть кортеж из четырёх целых чисел, задающих количество пикселей, на которое уменьшаются левая, верхняя, правая и нижняя стороны прямоугольника фокуса, когда он используется для фокуса клавиатуры.

Это может быть полезно, когда кнопки перекрываются. Алгоритм фокуса клавиатуры не работает с перекрывающимися кнопками, поэтому это свойство можно использовать для внутреннего уменьшения размера кнопок, чтобы фокус работал.

key_events -  boolean

Если True, события, сгенерированные клавиатурой, передаются дочерним элементам этой кнопки. Если False, эти события не распространяются. В стиле по умолчанию это свойство установлено в True, когда кнопка находится под курсором (hovered), и в False в противном случае.

Установка этого свойства в True может быть использована для передачи событий клавиатуры полю ввода внутри кнопки, даже если кнопка не в фокусе.

Свойства стиля полосы (Bar)

Полосы (bars) рисуются с желобками (gutters) слева и справа, нажатие на которые может сместить полосу на небольшое значение. Оставшееся пространство — это та часть полосы, которая может изменяться, причём её размер с каждой стороны пропорционален значению полосы как доле от всего диапазона.

Бегунок (thumb) — это область в центре полосы, которую пользователь может перетаскивать.

Когда полоса рисуется, сначала рисуется тень бегунка. Затем левая/нижняя и правая/верхняя стороны полосы, а после — сам бегунок.

Обратите внимание, что используемые стороны полосы зависят от значения свойства bar_vertical. Если оно True, используются верхняя и нижняя стороны. В противном случае — левая и правая.

bar_vertical -  boolean

Если True, полоса имеет вертикальную ориентацию. Если False — горизонтальную.

bar_invert -  boolean

Если True, значение полосы представляется на правой/верхней стороне, а не на левой/нижней.

bar_resizing -  boolean

Если True, мы изменяем размер сторон полосы. Если False, мы отрисовываем стороны полосы в полном размере, а затем обрезаем их.

left_gutter -  int

Размер желобка с левой стороны полосы в пикселях.

right_gutter -  int

Размер желобка с правой стороны полосы в пикселях.

top_gutter -  int

Размер желобка с верхней стороны полосы в пикселях.

bottom_gutter -  int

Размер желобка с нижней стороны полосы в пикселях.

left_bar -  displayable

Отображаемый элемент, используемый для левой стороны полосы.

right_bar -  displayable

Отображаемый элемент, используемый для правой стороны полосы.

top_bar -  displayable

Отображаемый элемент, используемый для верхней стороны полосы.

bottom_bar -  displayable

Отображаемый элемент, используемый для нижней стороны полосы.

base_bar -  displayable

Единый отображаемый элемент, который используется для left_bar/right_bar или top_bar/bottom_bar, в зависимости от ориентации. (Может использоваться вместе с thumb для создания слайдера или полосы прокрутки.)

thumb -  displayable or None

Если не None, это отображаемый элемент, который рисуется поверх разрыва между сторонами полосы.

thumb_align -  float

Выравнивание бегунка относительно полосы. Если полоса и бегунок имеют разные размеры — например, бегунок выше, чем высота горизонтальной полосы — thumb_align можно установить в 0.5, чтобы центры полосы и бегунка были выровнены.

thumb_shadow -  displayable or None

Если не None, это отображаемый элемент, который рисуется поверх разрыва между сторонами полосы.

thumb_offset -  int or tuple of (int, int)

Величина, на которую бегунок перекрывает части полосы, в пикселях. Чтобы левая и правая части полосы выглядели как единое целое, установите это значение равным половине ширины бегунка в пикселях. Это также может быть кортеж, в этом случае первое число используется для смещения левого/верхнего края бегунка, а второе — для смещения правого/нижнего края.

mouse -  string

Стиль курсора мыши, который используется, когда кнопка находится в фокусе. Должен быть одним из стилей в config.mouse.

unscrollable -  string or None

Определяет, что происходит, если полоса непрокручиваема (если её диапазон установлен в 0, как в случае с viewport, содержащим отображаемый элемент меньшего размера, чем сам viewport). Существует три возможных значения:

None

Отрисовывает полосу как обычно.

"insensitive"

Отрисовывает полосу в неактивном состоянии. Это позволяет полосе изменять свой стиль, чтобы отразить свою бесполезность.

"hide"

Полностью отключает отрисовку полосы. Пространство для полосы будет выделено, но в нём ничего не будет нарисовано.

keyboard_focus -  boolean

Если True (по умолчанию), эта кнопка может получить фокус через механизм фокуса клавиатуры, если она вообще может быть сфокусирована. Если False, механизм фокуса клавиатуры пропустит эту кнопку. (Механизм фокуса клавиатуры используется клавиатурами и клавиатуроподобными устройствами, такими как геймпады.)

Свойства стиля контейнера (Box)

Используются для горизонтальных и вертикальных контейнеров-компоновок (box layouts).

spacing -  int

Расстояние в пикселях между элементами этого контейнера.

first_spacing -  int

Если не None, расстояние в пикселях между первым и вторым элементами этого контейнера. Переопределяет свойство spacing.

box_reverse -  boolean

Если True, размещение элементов в контейнере будет обратным. Когда это свойство равно True, hbox будет заполняться справа налево, а vbox — снизу вверх. По умолчанию False.

box_wrap -  boolean

Если True, контейнеры будут переносить содержимое, когда оно достигнет конца строки или столбца. Если False (по умолчанию), они будут выходить за пределы строки.

box_wrap_spacing -  int

Когда box_wrap равно True, это расстояние между перенесёнными строками или столбцами. (То есть, это вертикальное расстояние между строками в hbox с переносом и горизонтальное расстояние между столбцами в vbox с переносом.)

box_align -  float or None

Определяет выравнивание строк или столбцов в контейнере. Если 0.0 (по умолчанию), строки выравниваются по левому краю, а столбцы — по верхнему. Если 0.5, перенесённые строки будут центрированы.

Когда это свойство не равно None, дочернему элементу не будет предложено дополнительное пространство при установке xfill или yfill, игнорируя позицию дочернего элемента в основном направлении контейнера.

order_reverse -  boolean

Если False (по умолчанию), элементы в контейнере будут отрисовываться от первого к последнему, причём первый элемент будет находиться под вторым, и так далее. Если True, этот порядок будет обратным, и первый элемент в контейнере будет находиться над всеми остальными элементами.

box_justify -  boolean or "first" or "all"

Если не False, содержимое контейнера будет выровнено по ширине — то есть, расстояние между элементами внутри контейнера будет скорректировано так, чтобы они равномерно занимали всё пространство контейнера. True приведёт к выравниванию всех строк, кроме последней. "first" приведёт к выравниванию только первой строки. "all" приведёт к выравниванию всех строк, включая последнюю. Выровненные строки не подчиняются box_align, за исключением случаев, когда в строке только один элемент.

Когда это свойство не равно false, дочернему элементу не будет предложено дополнительное пространство при установке xfill или yfill, игнорируя позицию дочернего элемента в основном направлении контейнера.

Свойства стиля сетки (Grid)

Это свойства, используемые отображаемыми элементами grid и vpgrid. Свойства полей (margin) также являются частью этой группы.

spacing -  int

Расстояние в пикселях между ячейками сетки.

xspacing -  int or None

Расстояние в пикселях между ячейками сетки по горизонтали. Имеет приоритет над свойством spacing, если не равно None.

yspacing -  int or None

Расстояние в пикселях между ячейками сетки по вертикали. Имеет приоритет над свойством spacing, если не равно None.

Свойства стиля фиксированной компоновки (Fixed)

Используются с фиксированной компоновкой (fixed layout).

fit_first -  boolean or "width" or "height"

Если True, размер фиксированной компоновки уменьшается до размера первого элемента в ней. Если "width", изменяется только ширина (компоновка будет заполнять экран по вертикали). Аналогично, "height" изменяет только высоту.

Позиция дочернего элемента игнорируется для целей fit_first.

xfit -  boolean

Если True, размер фиксированной компоновки уменьшается по горизонтали, чтобы соответствовать правому краю самого правого дочернего элемента.

yfit -  boolean

Если True, размер фиксированной компоновки уменьшается по вертикали, чтобы соответствовать нижнему краю самого нижнего дочернего элемента.

Когда эти свойства заданы, дочерним элементам сначала предлагается вся область, выделенная для fixed-компоновки её родителем. После того как размер и расположение дочерних элементов становятся известны, эти свойства используются для определения размера самой fixed-компоновки.

Свойства полей (Margin)

Свойства полей используются для добавления прозрачного пространства вокруг некоторых отображаемых элементов. В первую очередь: окон, рамок, кнопок и вокруг сеток grid или vpgrid.

left_margin -  int

Размер прозрачного пространства слева от отображаемого элемента в пикселях.

right_margin -  int

Размер прозрачного пространства справа от отображаемого элемента в пикселях.

xmargin -  int

Эквивалентно установке одинаковых значений для left_margin и right_margin.

top_margin -  int

Размер прозрачного пространства над отображаемым элементом в пикселях.

bottom_margin -  int

Размер прозрачного пространства под отображаемым элементом в пикселях.

ymargin -  int

Эквивалентно установке одинаковых значений для top_margin и bottom_margin.

margin -  tuple

При задании кортежа из двух элементов эквивалентно установке xmargin и ymargin. При задании кортежа из четырёх элементов эквивалентно установке left_margin, top_margin, right_margin и bottom_margin.