Динамическое изменение цвета фона виджета в Tkinter

#python #python-3.x #tkinter

#python #tkinter

Вопрос:

У меня есть простое окно tkinter. Он состоит из небольшого окна, таймера и кнопки для установки таймера. Я не хочу вдаваться в подробности кода.

Я хочу изменить фон всех виджетов в моем окне (кнопки, метки и т.д.).

Моя первая мысль — использовать глобальную переменную, которую я установлю "red" , например, и связать все опции виджетов background с глобальной переменной. Затем при нажатии кнопки я изменю глобальную переменную на "green" (чтобы фон всех виджетов изменился), но ничего не происходит.

Насколько я понимаю, это было .mainloop() своего рода обновление окна. Как я могу заставить виджеты изменять цвет фона при изменении моей переменной без перезапуска моего приложения?

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

1. не могли бы вы опубликовать хотя бы часть своего кода, это облегчило бы тестирование этой проблемы.

Ответ №1:

исходя из моего первого впечатления, я думаю, что это должно быть то, что вы ищете, в качестве простого примера

 from Tkinter import *

root = Tk()
global colour
global colourselection 
global count 
colour = ""
colourselection= ['red', 'blue']
count = 1

def start(parent):
    Tk.after(parent, 1000, change)

def change():
    global colour 
    global colourselection
    global count 
    if (count < 2 ):
        colour = colourselection[count]
        button.configure(bg = colour)
        count   1
    else:
        colour = colourselection[count]
        button.configure(bg = colour)
        count = 1 
    start(root)



button = Button(text = 'start', command = lambda: start(root))
button.pack()

root.mainloop()
  

Я уверен, что вы сможете решить любые проблемы, это не было проверено

Ответ №2:

Цвета фона автоматически не изменятся. У Tkinter есть возможность делать такие вещи со шрифтами, но не с цветами.

Вам нужно будет написать некоторый код для перебора всех виджетов и изменения их фоновых цветов.