2016-08-26 2 views
1

Ich arbeite an einem Simon-Spiel in Python mit Tkinter und ich habe Probleme, die Arbeit der Befehl der Schaltfläche.Python Simon Spiel: Ich kann nicht den Befehl des Knopfes arbeiten, wie ich brauche

Für das Spiel muss der aktive Hintergrund der Schaltfläche von der normalen Farbe zu einer anderen Farbe wechseln, wenn geklickt wird und dann zu der normalen Farbe zurückkehren und ich muss die Aktion für eine unbestimmte Anzahl von Klicks wiederholen können.

Der notwendige Code hierfür lautet:

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

Hier ist der eigentliche Code in der yellowClick() Funktion macht den activebackground der Schaltfläche richtig Farbe yellow3 zu ändern, aber ich weiß nicht, wie zurückkehren es nach 3 Sekunden zu gelb, und dann in der Lage sein, die Aktion für eine unbegrenzte Anzahl von Klicks zu wiederholen.

Ich habe versucht, mit time.sleep() auf diese Weise:

def yellowClick(): 

    yellow.configure(activebackground="yellow3") 

    time.sleep(3) 

    yellow.configure(activebackground="yellow") 

Aber es macht nur die Taste gelb und letzte 3 Sekunden einzuschalten. Anstatt gelb3 zu drehen, warten Sie 3 Sekunden und kehren dann zu gelb zurück.

Jede Hilfe ist willkommen.

Antwort

2

aber ich weiß nicht, wie es nach gelb nach 3 Sekunden zurück, haben

Tkinter-Widgets ein Verfahren after für genau diese Art der Sache benannt. Wenn Sie es in einer anderen Farbe in drei Sekunden ändern möchten, können Sie dies tun:

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

Diese eine anonyme Funktion erstellt, die etwa drei Sekunden (3000 Millisekunden) in die Zukunft führen wird.

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

Das funktioniert für mich. Was ist das Ergebnis auf Ihrer Maschine?

+0

Für mich funktioniert das auf dem Kopf, weil es die Farbreihenfolge in 3 Sekunden gelb und dann gelb3 macht, muss es aus gelb werden gelb3 und dann gelb. – Andrea

+0

Ich habe diese '3' 2 Zeilen nach unten verschoben :) – grael

+0

Wenn du zwischen beiden gelb.configure meinst, das ist, was ich versucht habe. – Andrea

Verwandte Themen