Tastaturabfrage, die übersprungen wird

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Robin
User
Beiträge: 50
Registriert: Dienstag 26. Juni 2007, 10:47

Hallo Python-Forum,

wie kann ich in eine Endlosschleife eine Tastaturabfrage einbauen,
die, solange keine Eingabe gemacht wird, übersprungen wird?

raw_input wartet auf die Eingabe und ist für die Anwendung nicht geeignet,
gibt es andere Möglichkeiten?

Gruß Robin
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Was hast du denn vor? Wenn du eine Eingabe brauchst, waehrend das eigentliche Programm weiterarbeitet, solltest du dich mal mit Threads befassen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
Robin
User
Beiträge: 50
Registriert: Dienstag 26. Juni 2007, 10:47

Mein Vorhaben:
Es werden zyklisch mehrere Geräte abgefragt. Bei einer Eingabe
sollte immer nur ein bestimmtes Gerät in der Schleife abgefragt werden.
Am besten Zahlenwert mit Enter eingeben können, ansonsten soll die Schleife laufen und alle Geräte abfragen

Kannst Du mir da etwas mehr auf die Sprünge helfen.
Bei PyGames gibt es auf Möglichkeiten, events abzufragen, aber das ist wohl
zu kompliziert.
Benutzeravatar
Robin
User
Beiträge: 50
Registriert: Dienstag 26. Juni 2007, 10:47

Rebeccas Thread Vorschlag und der Code vom Schlangenbeschwörer aus dem Forum haben mich weitergebracht, darauf kann ich aufbauen. Hier der Code vom Schlangenbeschwörer. Danke!!!

Code: Alles auswählen

import Tkinter as tk
import time
import thread
def counter():
    i = 1
    while 1:
        countvar.set(str(i))
        i += 1
        time.sleep(1)
root = tk.Tk()
countvar = tk.StringVar()
label = tk.Label(root, textvariable = countvar, font = ("Comic Sans MS", 20))
label.pack()
thread.start_new_thread(counter, ())
root.mainloop()
Zuletzt geändert von Robin am Mittwoch 29. August 2007, 13:26, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Robin!

Es wäre echt super, wenn du deinen Code in Code-Tags legen würdest. --> http://www.python-forum.de/faq.php#21

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Robin
User
Beiträge: 50
Registriert: Dienstag 26. Juni 2007, 10:47

Also so Gerold, sieht wirklich besser aus!

Code: Alles auswählen

import Tkinter as tk
import time
import thread
def counter():
     i = 1
while 1:
     countvar.set(str(i))
     i += 1
     time.sleep(1)
root = tk.Tk()
countvar = tk.StringVar()
label = tk.Label(root, textvariable = countvar, font = ("Comic Sans MS", 20))
label.pack()
thread.start_new_thread(counter, ())
root.mainloop()
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Robin hat geschrieben:Also so Gerold, sieht wirklich besser aus!
Und jetzt noch den vorherigen Post editieren und das auch dort in Code-Tags setzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Robin
User
Beiträge: 50
Registriert: Dienstag 26. Juni 2007, 10:47

Zufrieden?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Robin hat geschrieben:Zufrieden?
Ja, dankeschön 8)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten