a) in Windows
b) in Linux
ein KeyEvent, ohne dabei das Programm zu blockieren:
Code: Alles auswählen
while 1:
print "key=" getkey()
in Linux: sys.stdin.read(1) wartet ebenfalls so lange, bis es mit enter quittiert wurde.
Code: Alles auswählen
while 1:
print "key=" getkey()
Danke für die prompte Antwort. Das verstehe ich nicht, dass so eine einfache Sache nicht einfach in Python drin ist. Vielleicht geht das vom Betriebssystem selbst nicht so leicht? dass die nur dann den Tastaturpuffer weitergeben, wenn ein Return gedrückt wurde.Hyperion hat geschrieben:Mit pygame geht so etwas.
Code: Alles auswählen
while 1:
dosomethingveryoften()
if mygetkeypress().lower() in ["qx"]:
print "quit"
break
@BlackJack: Schade, mich hats ja auch schon gewundert, warum im google so schwer was zu finden ist. Ich frage mich: Wie breche ich das Programm sonst elegant ab? Es soll einfach dann abgebrochen werden, wenn der User es nicht mehr braucht. Ctrl-C geht mir aber gegen den Strich.BlackJack hat geschrieben:@Francesco: Wie Du schon richtig vermutest ist diese "einfache" Sache nicht wirklich einfach. Das hängt vom Betriebssystem ab und dort auch von wo man die Eingabe bekommen möchte -- Terminal, Fenstermanager, direkt aus dem Tastaturpuffer… Portabel ist das nicht so einfach zu lösen. Eine standardisierte Schnittstelle gibt's wohl nicht wirklich.
Wieso das? Ist das nicht eine durchaus übliche Kombi?Francesco hat geschrieben: @BlackJack:Ich frage mich: Wie breche ich das Programm sonst elegant ab? Es soll einfach dann abgebrochen werden, wenn der User es nicht mehr braucht. Ctrl-C geht mir aber gegen den Strich.
Weil Ctrl-C ist abwürgen. Es kann ja sein, dass eine Fileoperation gerade im Gang ist. Es sollte "sanft" ausgestiegen werden.Hyperion hat geschrieben:Francesco hat geschrieben: Wieso das? Ist das nicht eine durchaus übliche Kombi?
Kann man das nicht mit einem KeyboardInterrupt abfangen? Oder ist das auch OS abhängig?Francesco hat geschrieben:Weil Ctrl-C ist abwürgen. Es kann ja sein, dass eine Fileoperation gerade im Gang ist. Es sollte "sanft" ausgestiegen werden.Hyperion hat geschrieben:Francesco hat geschrieben: Wieso das? Ist das nicht eine durchaus übliche Kombi?
Das würde aber genau so mittendrin aussteigen, denke ich. Ich mein so tragisch ist das bei dieser Anwendung eh nicht (wenn das letzte Bild nicht mehr richtig gespeichert wird), aber stören tuts mich schon, warum man nicht auf einen Tastendruck abfragen kann, ohne gleich wieder mit dem curses modul hantieren zu müssen.Hyperion hat geschrieben: Kann man das nicht mit einem KeyboardInterrupt abfangen? Oder ist das auch OS abhängig?
Hu? Dann musst du halt im KeyboardInterrupt ein brauchbares Handling einbauen. Du kannst sogar C-c ignorieren wenn du willst. Insofern verstehe ich unter "Abwürgen" eher was anderes.Francesco hat geschrieben:Das würde aber genau so mittendrin aussteigen, denke ich.Hyperion hat geschrieben: Kann man das nicht mit einem KeyboardInterrupt abfangen? Oder ist das auch OS abhängig?
Nee, das ist eine von 2 Fragen - siehe 1. Post vom OP.BlackJack hat geschrieben:*Das* ist hier die Frage.