Hallo, ich bin ein absoluter Beginner in Python und versuche zur Zeit ein Memoryspiel in Python mit Tkinter zu programmieren. Mein Problem:
Nach dem 2. Aufdecken einer Karte sollen beide Karten kurz angezeigt werden (etwa 2-3 sek) bevor sie wieder zugedeckt werden. Ich habe schon im Internet und in diesem Forum gesucht, aber nichts gefunden.
Gibt es einen timeout-Befehl in Python mit dem ich dieses Problem lösen kann?
time.sleep(2) funktioniert nicht - damit erzwinge ich zwar ein timeout, allerdings wird die 2. karte trotzdem nicht angezeigt.
Wäre dankbar über jeden Beitrag!
MfG
Peti
Timout in Python?
Bin selbst neu ...
würde es mit einer if - Schleife mal versuchen.
Nach dem Motto:
Sonst weiß ich selbst derzeit auch keine besser Lösung.
Vielleicht in paar Jahren, mal sehen ... .
würde es mit einer if - Schleife mal versuchen.
Nach dem Motto:
Code: Alles auswählen
if Time > 3:
funktion schließen.
Vielleicht in paar Jahren, mal sehen ... .
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
ich würde für jedes kartenaufdecken ein thread starten
wo ein time.sleep() steht
wo ein time.sleep() steht
Danke, für die Ansätze!
Habe jetzt alles ausprobiert... Das Problem bleibt: Die Unterbrechung funzt, aber die 2. Karte wird nicht angezeigt während dieser Pause und verschwindet anschließend halt wieder.
Ich kriege es einfach nicht hin. Wenn man in der Python-Hilfe nach "setTimeout" sucht, findet man auch einen Eintrag im Kapitel Socket-Objects. Jetzt weiss ich nicht ob es der Befehl ist nach dem ich suche und wie man diesen benutzt.
Habe jetzt alles ausprobiert... Das Problem bleibt: Die Unterbrechung funzt, aber die 2. Karte wird nicht angezeigt während dieser Pause und verschwindet anschließend halt wieder.
Ich kriege es einfach nicht hin. Wenn man in der Python-Hilfe nach "setTimeout" sucht, findet man auch einen Eintrag im Kapitel Socket-Objects. Jetzt weiss ich nicht ob es der Befehl ist nach dem ich suche und wie man diesen benutzt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein, der ist für Timeouts in Netzwerk-sockets.peti hat geschrieben:Ich kriege es einfach nicht hin. Wenn man in der Python-Hilfe nach "setTimeout" sucht, findet man auch einen Eintrag im Kapitel Socket-Objects. Jetzt weiss ich nicht ob es der Befehl ist nach dem ich suche und wie man diesen benutzt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Mir fällt es ein wenig schwer, den Kern des Problems zu verstehen.peti hat geschrieben:...
Habe jetzt alles ausprobiert... Das Problem bleibt: Die Unterbrechung funzt, aber die 2. Karte wird nicht angezeigt während dieser Pause und verschwindet anschließend halt wieder.
...
Also ... eine Karte ist aufgedeckt, die 2. soll aufgedeckt werden während die Zeit läuft? Und danach wieder geschlossen werden?
Wenn in der Funktion der Befehl oder eine weitere Funktionsanweisung zum aufdenken der 2. Karte vor dem Zeitzähler (oder wie auch immer das heißt - eben die Zeile, für die Unterbrechung ect.) ist, müßte es vielleicht gehen.
Ansonsten ... wüßte ich auch nicht weiter.
Außer vielleicht noch, das man den Zeitunterbrecher per Funktion nach dem aufdecken der 2. Karten aufruft. Oder noch besser, erst sicher stellt ob eine 2. Karte aufgedeckt ist (mit dem bekannten if (und einer entsprechenden Variable?)) und dannach erst der Timer startet.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
peti hat geschrieben:die 2. Karte wird nicht angezeigt während dieser Pause und verschwindet anschließend halt wieder.
Ich muss sagen, dass ich das auch reichlich widersprüchlich finde. Wenn sie nicht angezeigt wird, wie kann sie dann verschwinden?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Ich versteh nicht, warum das für manche so unverständlich ist. Schaut Euch mal dieses Snippet an:
Gut, man clickt auf den Button, was passiert ... 3 Sekunden lang nix.
Genau das ist peti's Problem. Wenn man Memory mit Buttons programmiert, soll ja folgendes passieren: Alle Buttons sind umgedreht (also es steht nix drauf). Ich klick auf einen - ein Text erscheint auf dem Button. Ich klick auf noch einen - auch auf dem erscheint ein Text. Sind beide Texte gleich, bleiben die Buttons so, wenn nicht, verschwinden sie nach, sagen wir mal 3 Sekunden wieder. Wie in meinem Beispiel gezeigt, sieht man aber den Text vom 2. Button nicht, weil 3 Sekunden lang nix passiert, und dann die Texte wieder verschwinden (also sieht man den Text vom 2. überhaupt nicht). Kennt sich noch wer aus?
Des Rätsels Lösung (zumindest bei meinem Snippet ist
Gruß, mawe
Ich versteh nicht, warum das für manche so unverständlich ist. Schaut Euch mal dieses Snippet an:
Code: Alles auswählen
from Tkinter import *
import time
def click():
b.configure(text="Off")
time.sleep(3)
root = Tk()def click():
b = Button(text="On",command=click)
b.pack()
root.mainloop()
Genau das ist peti's Problem. Wenn man Memory mit Buttons programmiert, soll ja folgendes passieren: Alle Buttons sind umgedreht (also es steht nix drauf). Ich klick auf einen - ein Text erscheint auf dem Button. Ich klick auf noch einen - auch auf dem erscheint ein Text. Sind beide Texte gleich, bleiben die Buttons so, wenn nicht, verschwinden sie nach, sagen wir mal 3 Sekunden wieder. Wie in meinem Beispiel gezeigt, sieht man aber den Text vom 2. Button nicht, weil 3 Sekunden lang nix passiert, und dann die Texte wieder verschwinden (also sieht man den Text vom 2. überhaupt nicht). Kennt sich noch wer aus?
Des Rätsels Lösung (zumindest bei meinem Snippet ist
Code: Alles auswählen
def click():
b.configure(text="Off")
root.update()
time.sleep(3)