Быстрое меню - TrueCat17/Ren-Engine GitHub Wiki
Быстрое меню находится снизу диалогового окна и содержит часто используемые кнопки:

Переменная quick_menu отвечает за включение (True, по умолчанию) или отключение (False) этого меню.
Об изменении свойств кнопок (размеры, изображения, шрифт и т. д.) читайте в статье Интерфейс (gui).
Вы можете добавить свою кнопку в быстрое меню.
Списком (list) кнопок является quick_menu_screen.items.
Добавление своей кнопки:
quick_menu_screen.items.append(['Screenshot', make_screenshot])
Добавляемый объект является массивом со следующими элементами:
- Строка с названием кнопки (автоматически будет применена система перевода);
- Функция, которая будет вызвана при нажатии на кнопку;
- Необязательный аргумент - вызываемый объект (
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 возвращает то, что вернул бы код, который был передан ему при создании.
Пример:
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 'Что-то'Подробнее читайте в статье Система переводов.