Расширенный графический интерфейс пользователя (Advanced GUI)
В этом разделе рассматриваются разные мелочи, связанные с использованием графического интерфейса пользователя.
Функции в языке Python (Python Functions)[править | править код]
В Python есть некоторые функции, которые поддерживают графический интерфейс пользователя.
gui.button_properties(kind)
- Учитывая kind кнопки, возвращает словарь, задающий стандартные свойства стиля для этой кнопки. В нём установлены:
- background
- Описывается ниже.
- padding
- Для переменной gui.kind_borders.padding, если она существует.
- xsize
- Для переменной gui.kind_width, если она существует.
- ysize
- Для переменной gui.kind_height, если она существует.
- Обратите внимание, что если kind – строка "nvl_button", функция будет искать переменную gui.nvl_button_background.
- Фон представляет собой кадр, который берёт своё фоновое изображение из первого существующего:
- gui/button/kind_[prefix_].background.png
- gui/button/[prefix_].background.png
- Если существуют переменные графического интерфейса с именем gui.kind_borders, они используются. Иначе используется gui.button_borders. Если gui.kind_tile существует, то определяет, являются ли границы мозаичными, иначе мозаикой управляет gui.button_tile.
- Для того, чтобы понять, что такое [prefix_], ознакомьтесь с документацией по поиску префиксов стилей.
gui.init(width, height)
- Инициализирует графический интерфейс пользователя.
- width
- Ширина окна по умолчанию.
- height
- Высота окна по умолчанию.
gui.rebuild()
- Перестраивает графический интерфейс пользователя.
- Примечание: это очень медленная функция.
gui.text_properties(kind=None, accent=False)
- Учитывая kind кнопки, возвращает словарь, задающий стандартные свойства стиля для этой кнопки. В нём установлены:
- font
- Для переменной gui.kind_text_font, если она существует.
- size
- Для переменной gui.kind_text_size, если она существует.
- xalign
- Для переменной gui.kind_text_xalign, если она существует.
- text_align
- Для переменной gui.kind_text_xalign, если она существует.
- layout
- Для subtitle, если gui.kind_text_xalign больше нуля и меньше единицы.
Также существует ряд переменных, которые задают свойство стиля color текста:
- color
- Для переменной gui.kind_text_color, если она существует. Если переменная не задана, а accent принимает значение True, для цвета текста устанавливается цвет выделения по умолчанию.
- insensitive_color
- Для переменной gui.kind_text_insensitive_color, если она существует.
- idle_color
- Для переменной gui.kind_text_idle_color, если она существует.
- hover_color
- Для переменной gui.kind_text_hover_color, если она существует.
- selected_color
- Для переменной gui.kind_text_selected_color, если она существует.
Все остальные свойства стиля текста также доступны. Например, gui.kind_text_outlines устанавливает свойство стиля контуров, gui.kind_text_kerning устанавливает кернинг и так далее.
◇ Подробнее о gui.rebuild[править | править код]
Функция gui.rebuild – довольно медленная функция, которая обновляет графический интерфейс пользователя для отображения текущего состояния Ren'Py. Она позволяет:
- Перезапускать все операторы define, определяющие переменные в пространстве имён графического интерфейса пользователей.
- Перезапускать все блоки translate python для текущего языка.
- Перезапускать все операторы style.
- Перестраивать все стили в системе.
Обратите внимание, что блоки init python не перезапускаются в gui.rebuild. Таким образом,
define gui.text_size = persistent.text_size
и
init python:
gui.text_size = persistent.text_size
различны.
◇ Оператор default, пространство имён gui и gui.rebuild[править | править код]
Оператор default изменил семантику применительно к пространству имён gui. При применении к переменной в пространстве имен gui оператор default выполняется с чередованием с оператором define, а при вызове gui.rebuild() операторы default повторно не запускаются.
Это означает, что если у нас есть:
default gui.accent_color = "#c04040"
define gui.hover_color = gui.accent_color
При первом запуске игры будет установлен цвет акцента, а затем цвет при наведении будет установлен на цвет акцента. Затем оба используются для установки различных цветов стиля.
Однако, если в рамках игрового скрипта мы имеем:
$ gui.accent_color = "#4040c0"
$ gui.rebuild()
Ren'Py будет перезапускать только оператор define, поэтому он установит цвет при наведении на цвет акцента, а затем обновит стили. Это даст возможность включить части графического интерфейса пользователя, которые изменяются по ходу игры.
Настройки GUI (GUI Preferences)[править | править код]
Ren'Py также поддерживает систему настройки GUI, состоящую из одной функции и пары действий.
gui.SetPreference(name, value, rebuild=True)
- Это действие устанавливает параметр графического интерфейса с name в value.
- rebuild
- Если принимает значение True, по умолчанию вызывается gui.rebuild(), чтобы изменения вступили в силу. Как правило, он должен принимать значение True, за исключением нескольких действий gui.SetPreference, и в этом случае он должен принимать значение False во всех, кроме последнего.
- Это очень медленное действие, и, вероятно, оно не подходит для использования при наведении на кнопку.
gui.TogglePreference(name, a, b, rebuild=True)
- Это действие переключает параметр графического интерфейса с name между значениями a и b. Он выбирается, если значение равно a.
- rebuild
- Если принимает значение True, по умолчанию вызывается gui.rebuild(), чтобы изменения вступили в силу. Как правило, он должен принимать значение True, за исключением нескольких действий gui.SetPreference, и в этом случае он должен принимать значение False во всех, кроме последнего.
- Это очень медленное действие, и, вероятно, оно не подходит для использования при наведении на кнопку.
gui.preference(name, default=<renpy.python.RevertableObject object at 0x7f2ef9da1c10>)
- Эта функция возвращает значение параметра графического интерфейса с name.
- default
- Если задан, то это значение становится значением по умолчанию параметра графического интерфейса. Значение по умолчанию должно быть задано при первом использовании параметра.
◇ Пример[править | править код]
Система настройки GUI используется при вызове gui.preference() при определении переменных, с именем параметра и значением по умолчанию. Например, можно использовать настройки графического интерфейса для определения шрифта и размера текста.
define gui.text_font = gui.preference("font", "DejaVuSans.ttf")
define gui.text_size = gui.preference("size", 22)
Затем можно использовать действия gui.SetPreference и gui.TogglePreference для добавления изменений значений параметров. Вот несколько примеров, которые можно добавить на экран настроек.
vbox:
style_prefix "check"
label _("Настройки")
textbutton _("OpenDyslexic") action gui.TogglePreference("font", "OpenDyslexic-Regular.otf", "DejaVuSans.ttf")
vbox:
style_prefix "radio"
label _("Размер шрифта")
textbutton _("Мелкий") action gui.SetPreference("size", 20)
textbutton _("Средний") action gui.SetPreference("size", 22)
textbutton _("Крупный") action gui.SetPreference("size", 24)
Источник[править | править код]
Статья "Advanced GUI" на английском языке.
На главную страницу | Официальная документация движка | Вернуться к началу статьи |