2016-05-06 5 views
-2

Ich benutze Python mit Tkinter, um ein Spiel zu erstellen. Wenn das Spiel zu Ende ist, versuche ich "Game Over" anzuzeigen, das ich als Bild eingefügt habe. Danach möchte ich ein paar Sekunden später ein neues Bild hinzufügen. Ich habe versucht, time.sleep(2) dazwischen zu setzen, aber es hat nicht funktioniert, es stoppt direkt nach dem Spiel vorbei.Wie verzögere ich ohne time.sleep?

+4

können Sie Ihren Code einfügen bitte? –

+1

Blick auf die Tkinter 'after'-Funktion http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.after-method –

+0

Haben Sie versucht,' update() 'Methode auf' Master' direkt nach der Zeit .sleep (2) Aussage? – ZbyszekKr

Antwort

2

Denken Sie nicht "Verzögerung", denke "Zeitplan". Sie können den "Game Over" -Bildschirm wie gewohnt erstellen und after verwenden, um eine Aktion zu planen. Dadurch kann die GUI weiterhin auf Ereignisse reagieren.

Das folgende Beispiel zerstört das „Spiel über“ Fenster in zwei Sekunden, aber man kann leicht tauschen nur aus Bildern, Text ändern, ändern Farben, etc.

import Tkinter as tk 

def gameover(): 
    top = tk.Toplevel(root) 
    label = tk.Label(top, text="Game over!") 
    label.pack(padx=20, pady=20, expand=True) 
    top.after(2000, top.destroy) 

root = tk.Tk() 
button = tk.Button(root, text='Click to simulate "game over"', command=gameover) 
button.pack(padx=20, pady=20) 

root.mainloop() 
+0

Es scheint einfach nicht zu funktionieren. Ich habe gerade ein Bild auf dem Bildschirm erstellt, wenn das Spiel endet, und ich brauche es, um später ein anderes zu erstellen. Ich habe es tatsächlich mit "nach" versucht, aber ich wollte es nach dem ersten Mal beenden, ich denke, es hat es nicht verarbeitet. Es tut mir leid, dass ich noch ein Anfänger bin. –