#python #kivy
#python #kivy
Вопрос:
Я хочу изменить цвет фонового экрана для разных случаев. Как я могу получить доступ к цвету холста через python…
Спасибо, Джулиус
Я пробовал это с помощью этого:
with self.canvas:
if time == times_list[6 or 7 or 8 or 9 or 10 or 11 or 12]:
Color(rgb=utils.get_color_from_hex("#d18154ff"))
if time == times_list[13 or 14 or 15 or 16 or 17]:
Color(rgb=utils.get_color_from_hex("#00b6fffff"))
if time == times_list[18 or 19 or 20 or 21]:
Color(rgb=utils.get_color_from_hex("#b46e46ff"))
if time == times_list[22 or 23 or 1 or 2 or 3 or 4 or 5 or 6]:
Color(rgb=utils.get_color_from_hex("#000000a8"))
<DuesseldorfWindow>:
name: "DueW"
canvas.before:
Color:
rgb : utils.get_color_from_hex("#00b6fffff")
Rectangle:
pos: self.pos
size: self.size
Ответ №1:
У холста нет цвета, скорее это список инструкций, которые нужно запускать одну за другой, чтобы нарисовать ваше приложение. Инструкция Color устанавливает внутреннюю контекстную переменную, чтобы сказать, что если что-то нарисовано, то оно примет этот цвет.
Имея это в виду, ваша верхняя часть кода, вероятно, просто добавляет инструкции по цвету к холсту, которые ничего не делают, поскольку они появляются после всего остального, что нарисовано. Вместо этого вам нужно изменить значение rgb инструкции Color во втором фрагменте кода.
Я предлагаю добавить colour = ListProperty(get_color_from_hex("x00b6ffff"))
объявление в ваш класс DusseldorfWindow, а затем записать rgb: root.colour
в kv. Затем позже, когда вы захотите изменить цвет, который вы пишете self.colour = ...
, чтобы изменить цвет, который уже используется, вместо добавления нового.
Комментарии:
1. Спасибо за ваш ответ, но я все еще получаю сообщение об ошибке: … 11: canvas.before: 12: Color: >> 13: rgb: root.color 14: Rectangle: 15: pos: self.pos … Ошибка атрибута: объект ‘DuesseldorfWindow’ не имеет атрибута ‘color’