#python #tkinter
Вопрос:
from tkinter import* window = Tk() color=['red','blue','purple'] def chgcolor(): for i in color: mybutton.config(bg=i) window.title('my first python gui') mybutton=Button(window,text='change color',command=chgcolor) mybutton.pack() window.mainloop()
Я пытаюсь заставить кнопку менять цвета на красный, затем синий, затем фиолетовый, а затем возвращаться к исходному цвету каждый раз, когда я нажимаю кнопку, но пока она становится фиолетовой, независимо от того, сколько раз я ее нажимаю. Какая-нибудь помощь?
Ответ №1:
Вам не нужно использовать для цикла внутри chgcolor()
. Используйте itertools.cycle()
цвета и next(color)
, чтобы получить следующий цвет и обновить кнопку внутри chgcolor()
:
# avoid using wildcard import import tkinter as tk from itertools import cycle window = tk.Tk() window.title('my first python gui') def chgcolor(): # get the next color from the color list mybutton.config(bg=next(color)) mybutton = tk.Button(window, text='change color', command=chgcolor) mybutton.pack() # create a color cycle list color = cycle(['red','blue','purple',mybutton['bg']]) window.mainloop()