我正在使用Tkinter在Python上制作一个Simon游戏,我在使用按钮的命令时遇到了问题。
对于游戏,按钮的主动背景在点击时必须从正常颜色变为另一种颜色,然后返回正常颜色,我必须能够无限次点击重复动作。
必要的代码是:
import Tkinter
base = Tkinter.Tk()
fr = Tkinter.Frame(base, bg="black", width="238", height="238")
def yellowClick():
yellow.configure(activebackground="yellow3")
yellow = Tkinter.Button(base, bd="0", highlightthickness="0",
width="7", height="5", activebackground="yellow",
bg="yellow3", command = yellowClick)
yellow.place(x = 30, y = 30)
fr.pack()
base.mainloop()
这里yellowClick()函数中的实际代码使得按钮的activebackground正确地将颜色改为yellow3,但我不知道如何在3秒后将其返回黄色,然后能够重复动作无限量的点击次数。
我用这种方式尝试了time.sleep():
def yellowClick():
yellow.configure(activebackground="yellow3")
time.sleep(3)
yellow.configure(activebackground="yellow")
但它只会使按钮变黄并持续3秒。而不是变黄3,等待3秒然后返回黄色。
欢迎任何帮助。
答案 0 :(得分:2)
但我不知道如何在3秒后将其恢复为黄色,
Tkinter小部件有一个名为after
的方法,正好用于此类事情。如果要在三秒内将其更改为其他颜色,则可以执行以下操作:
yellow.configure(activebackground="yellow3")
yellow.after(3000, lambda: yellow.configure(activebackground="yellow"))
这会创建一个匿名函数,将来会运行大约三秒(3000毫秒)。
答案 1 :(得分:0)
import Tkinter
import time
base = Tkinter.Tk()
fr = Tkinter.Frame(base, bg="black", width="238", height="238")
def yellowClick():
yellow.configure(activebackground="yellow")
time.sleep(3)
yellow.configure(activebackground="yellow3")
yellow = Tkinter.Button(base, bd="0", highlightthickness="0",
width="7", height="5", activebackground="yellow",
bg="yellow3", command = yellowClick)
yellow.place(x = 30, y = 30)
fr.pack()
base.mainloop()
这对我有用。你机器的结果是什么?