Как я могу получить доступ к списку цветов в canvas? Kivy

#python #kivy

#python #kivy

Вопрос:

Я хочу получить доступ к списку «цветов» в kv, чтобы изменить цвет фона в python. Я пытался получить доступ к цвету с помощью идентификатора, но это не сработало.

 class DuesseldorfWindow(Screen):
    def __init__(self, **kwargs):
        Screen.__init__(self, **kwargs)
        Clock.schedule_once(self.get_weather_data,0.5)

    def get_weather_data(self,dt):
        USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
        # US english
        LANGUAGE = "en-US,en;q=0.5"

        url = "https://www.google.com/search?q=wetter düsseldorfamp;oq=wetter düsseamp;aqs=chrome.0.0l8.4109j1j7amp;sourceid=chromeamp;ie=UTF-8"
        session = requests.Session()
        session.headers['User-Agent'] = USER_AGENT
        session.headers['Accept-Language'] = LANGUAGE
        session.headers['Content-Language'] = LANGUAGE
        html = session.get(url)
        # create a new soup
        soup = BeautifulSoup(html.text, "html.parser")
        temperature = soup.find("span", attrs={"id": "wob_tm"}).text
        day_and_time = soup.find("div", attrs={"id": "wob_dts"}).text
        weather_condition = soup.find("span", attrs={"id": "wob_dc"}).text
        time = day_and_time[8:15]
        day = day_and_time[0:6]

        #Here I wanna access the background color

  

Kv

 <DuesseldorfWindow>:
    name: "DueW"
    colour : 0, 0.71372549, 1, 1
    canvas.before:
        Color:
            rgba : self.colour
        Rectangle:
            pos: self.pos
            size: self.size
  

Комментарии:

1. Простое использование self.colour = [1,0,0,1] не работает?

Ответ №1:

Вы можете использовать свойство group в canvas, как показано ниже:

 <DuesseldorfWindow>:
    name: "DueW"
    colour : 0, 0.71372549, 1, 1
    canvas.before:
        Color:
            group: 'color'
            rgba : self.colour
        Rectangle:
            pos: self.pos
            size: self.size
  

А затем в python вы можете получить цвет холста, как показано ниже:

 self.canvas.before.get_group('color')[0].rgba