Расширенный графический интерфейс пользователя (Advanced GUI)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

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

Функции в языке 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" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи