2016-08-26 53 views
1

我正在使用Tkinter在Python中使用西蒙遊戲,而且我在使按鈕的命令工作時遇到問題。Python西蒙遊戲:我不能讓按鈕的命令以我需要的方式工作

對於遊戲,點擊後按鈕的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()函數使按鈕適當地改變顏色yellow3的activebackground,但我不知道怎麼回的實際代碼它在3秒後變黃,然後能夠重複無限次點擊的動作。

我試圖以這種方式time.sleep():

def yellowClick(): 

    yellow.configure(activebackground="yellow3") 

    time.sleep(3) 

    yellow.configure(activebackground="yellow") 

但它只是使按鈕變爲黃色,最後3秒。而不是變黃3,等待3秒鐘,然後返回到黃色。

任何幫助,歡迎。

回答

2

,但我不知道如何在3秒後它返回到黃色,

Tkinter的部件有一個用於精確這樣的事情名爲after方法。如果你想改變它,以不同的顏色在三秒鐘內,你可以這樣做:

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

這產生了將在將來運行大約三秒鐘(3000毫秒)的匿名函數。

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

這對我有用。你機器上的結果是什麼?

+0

對我來說,這是顛倒的,因爲它使得顏色順序在3秒內變爲黃色,然後變爲黃色3,它必須從黃色變成黃色,然後變爲黃色。 – Andrea

+0

我把'3'向下移動了兩行:) – grael

+0

如果你的意思是兩者都是yellow.configure,那就是我試過的。 – Andrea

相關問題