Как заставить кнопку tkinter менять цвет каждый раз, когда я нажимаю на нее

#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()