Python Simon游戏:我无法使按钮的命令按我需要的方式工作

Python Simon游戏:我无法使按钮的命令按我需要的方式工作,python,tkinter,Python,Tkinter,我正在使用Tkinter开发Python中的Simon游戏,在使用按钮的命令时遇到问题 对于游戏来说,点击按钮时,按钮的activebackground必须从正常颜色变为另一种颜色,然后返回到正常颜色,我必须能够无限次地重复该操作 这方面的必要代码是: import Tkinter base = Tkinter.Tk() fr = Tkinter.Frame(base, bg="black", width="238", height="238") def yellowClick():

我正在使用Tkinter开发Python中的Simon游戏,在使用按钮的命令时遇到问题

对于游戏来说,点击按钮时,按钮的activebackground必须从正常颜色变为另一种颜色,然后返回到正常颜色,我必须能够无限次地重复该操作

这方面的必要代码是:

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

欢迎任何帮助

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()
这对我有用。在你的机器上有什么结果

但我不知道如何在3秒后将其恢复为黄色

Tkinter小部件在之后有一个名为
的方法,正是为了实现这类功能。如果要在三秒内将其更改为其他颜色,可以执行以下操作:

 yellow.configure(activebackground="yellow3")
 yellow.after(3000, lambda: yellow.configure(activebackground="yellow"))

这将创建一个匿名函数,该函数将在未来大约运行3秒(3000毫秒)

对我来说,这是颠倒的,因为它使颜色顺序在3秒内变为黄色,然后变为黄色3,它必须从黄色变为黄色3,然后变为黄色。我向下移动了
3
2行:)如果你的意思是在两个黄色之间。配置,这就是我尝试的。那
time.sleep(3)
将阻止您看到紧跟在它前面的
配置的结果。所以它涵盖了第一次配置?