Обновление существующих стилей тога-боксов

Пытаюсь создать простое приложение для игры с алкоголем, используя BeeWare с Toga, Briefcase и Python.
Удар о стену при попытке динамически обновить определенные визуальные элементы программы.
Игра в основном печатает задачу на экране, оформленную определенными цветами.
Печать задач и обновление для новой с помощью кнопки работает нормально, но изменение цвета фона - нет. В справочнике / документации по тоге не упоминается, как это сделать, и ни один из примеров, которые я нашел, также не касается этого.

Мой код:

import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW, CENTER
from appname.lists import challenges, colors
import random
class appname(toga.App):

    fullist = challengelist

    def startup(self):
        main_box = toga.Box(style=Pack(alignment=CENTER))
        challenge = self.getChallenge(self)
        textcolor, bckcolor = random.choice(list(colors.items()))
        self.challenge_label = toga.Label(
            '{}'.format(challenge),
            style=Pack(text_align=CENTER,padding=50,font_size=50,color=textcolor))
        
        self.challenge_box = toga.Box(style=Pack(
                                    direction=COLUMN,
                                    background_color=bckcolor
                                    )
                                 )

        refresh_button = toga.Button(
                        'New Challenge',
                        on_press=self.newChallenge
                        )


        self.challenge_box.add(self.challenge_label)
        self.challenge_box.add(refresh_button)

        main_box.add(self.challenge_box)
        self.main_window = toga.MainWindow(title=self.formal_name)
        self.main_window.content = main_box
        self.main_window.show()

    def getChallenge(self,widget):
        return random.choice(self.fullist)

    def newChallenge(self,widget):
        self.challenge_label.text= random.choice(self.fullist)
        self.challenge_box.style.update(background_color=random.choice(list(colors.values(()))

def main():
    return appname()

0 ответов

Другие вопросы по тегам