#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 есть возможность делать такие вещи со шрифтами, но не с цветами.
Вам нужно будет написать некоторый код для перебора всех виджетов и изменения их фоновых цветов.