Python西蒙游戏:我不能让按钮的命令按照我需要的方式工作

时间:2016-08-26 16:03:43

标签: python tkinter

我正在使用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秒然后返回黄色。

欢迎任何帮助。

2 个答案:

答案 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()

这对我有用。你机器的结果是什么?