Быстрое меню - TrueCat17/Ren-Engine GitHub Wiki

Описание

Быстрое меню находится снизу диалогового окна и содержит часто используемые кнопки:
New Visual Novell

Переменная quick_menu отвечает за включение (True, по умолчанию) или отключение (False) этого меню.


Свойства кнопок

Об изменении свойств кнопок (размеры, изображения, шрифт и т. д.) читайте в статье Интерфейс (gui).


Добавление

Вы можете добавить свою кнопку в быстрое меню.

Списком (list) кнопок является quick_menu_screen.items.

Добавление своей кнопки:
quick_menu_screen.items.append(['Screenshot', make_screenshot])

Добавляемый объект является массивом со следующими элементами:

  1. Строка с названием кнопки (автоматически будет применена система перевода);
  2. Функция, которая будет вызвана при нажатии на кнопку;
  3. Необязательный аргумент - вызываемый объект (callable - например, функция), возвращающий True (если кнопку нужно показать) или False (если нет).

Т. к. quick_menu_screen.items является простым массивом, то доступны все его методы.
Вот более сложный пример:

my_score = 0

def my_secret_func():
	# remove button from list
	i = 0
	while i < len(quick_menu_screen.items):
		if quick_menu_screen.items[i][0] == 'Something':
			quick_menu_screen.items.pop(i)
			break
		i += 1
	
	notification.out('Something')

quick_menu_screen.items.insert(1, ['Something', my_secret_func, Eval('my_score > 10')])

Здесь кнопка "вставляется" (insert) так, что после этого занимает место 1 (отчёт идёт с 0).
Также стоит обратить внимание на условие отображения: значение переменной my_score должно быть больше 10. Для упрощения проверки рекомендуется ввести (или скопипастить) в консоль (Shift+O) код my_score = 11.

Ну и перед удалением производится поиск элемента.
Почему бы просто не вызвать quick_menu_screen.items.pop(1), ведь именно в индекс 1 мы его и добавляли?
Специально для случая, когда после этого кода что-то могло вставить ещё одну кнопку перед нашей.


Объяснение Eval

"Вызов" экземпляра класса Eval возвращает то, что вернул бы код, который был передан ему при создании.
Пример:

my_var = 5
def my_func(a):
	return a * 2

e = Eval('my_var * my_func(2) + 3')
answer1 = e() # 23

def instead_eval():
	return my_var * my_func(2) + 3
answer2 = instead_eval() # 23

Перевод

Перевод выполняется довольно просто (это код верхнего уровня - не в блоках init, label и т. д.):

translate russian strings:
	
	old 'Screenshot'
	new 'Скриншот'
	
	old 'Something'
	new 'Что-то'

Подробнее читайте в статье Система переводов.


Далее ->
<- Назад

⚠️ **GitHub.com Fallback** ⚠️