So, seit Wochen geistere ich hier im Forum herum und fand auch schon viele Antworten zu bestimmten Fragen. Zu einer Sache jedoch leider noch nicht. Und zwar würde ich gerne ein Programm schreiben, dass auf eine Eingabe wartet, aber im Hintergrund trotzdem weiterläuft. Mit raw_input() ist das nicht möglich, da dieses ja den Code erst weiterlaufen lässt, wenn die <ENTER>-Taste gedrückt wurde. Nun habe ich aber in pygame schon Einiges an Code gefunden, welches aufzeigt wie das funktionieren könnte. Und zwar ist die Idee, dass erst durch Tastendruck der Input aufgezeichnet wird, oder man jeden Tastendruck als Einzeleingabe behandelt. Also soetwas wie "if event.Tastendruck: bla ... else: sleep(2)" Das würde aber vorraussetzen, dass ich einen Tastendruck registriere. Und da würde ich gerne wissen, ob die Idee erst einmal grundsätzlich die Richtige für dieses Problem ist, und wie es dann in py zu realisieren ist. Ich könnte es mit pygame machen, aber ich würde gerne so wenig wie möglich noch weitere Module benutzen. Derzeit nur threading und time, mehr sollten es nach Möglichkeit nicht sein. Warum ich diesen Code brauche? Nunja, für meinen persönlichen Ehrgeiz, es wurmt mich, dass ich das noch nicht lösen konnte.
Code: Alles auswählen
import threading,time,sys
class SchreibFaden(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while 1:
self.input = raw_input() #hier muss natürlich dann die Eingabeprozedur rein
print self.input
sys.stdout.flush() #Erweiterung dank BlackJack
time.sleep(5)
class TextFaden(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while 1:
print "ich bin hier"
sys.stdout.flush() #Erweiterung dank BlackJack
time.sleep(2)
if __name__=="__main__":
thread1 = SchreibFaden()
thread1.start()
thread2 = TextFaden()
thread2.start()
das habe ich jetzt mal in 5min hingeschmiert, obschon mir vorher schon klar war, dass mein raw_input() das gesamte Programm blockieren wird.