Seite 1 von 1

Schleife mit Tastendruck abbrechen?

Verfasst: Sonntag 29. Juni 2003, 13:52
von günni
hi
wie kann ich eine schleife durch einen tastendruck (z.b. enter) abbrechen?

hitergrund:
ich habe mir ein skript geschrieben, das alle 55 sekunden eine webseite aufruft.
dies soll aber nur solange laufen bis man eine taste drückt um es abzubrechen...

Code: Alles auswählen

#!/usr/bin/python2.2
import time, sys, webbrowser

url = ("http://aufzurufende_url.de ")
stop = 1
while stop:
	webbrowser.open(url)
	time.sleep(55)
ich hab mir gedacht einfach durch einen tastendruck "stop" auf 0 zu setzen und dadurch die schleife abzubrechen....
nur wie funktioniert sowas? oder gibts da auch einfachere / bessere wege?

gruß günni

re

Verfasst: Sonntag 29. Juni 2003, 16:46
von ertlpott
du kannst eine Endlosschleife durch strg+c abbrechen wenn das dass ist was du meinst.

cu

Simon

Verfasst: Sonntag 29. Juni 2003, 18:09
von Dookie
Hallo,

hmm, wenn Du mit dem webbrowser-Modul den Browser startest, bekommt dieser den "Fokus", also alle Maus- und Tastatureingaben gehen an den Browser um von dem verarbeitet zu werden. Da hast Du dann keine Chance einen Tastendruck an Dein Script geliefert zu bekommen.


Gruß

Dookie

Verfasst: Sonntag 29. Juni 2003, 18:15
von günni
hi
hmm.. wenn ich versuche die schleife mit Strg + c abzubrechen passiert garnix...

aber das meinte ich auch nicht..
ich dachte an n "sauberen abgang" sozusagen. sowas in der art wie ne text ausgabe:
" Zum beenden Enter drücken... " mehr oder weniger Dau kompatiebel
(auch wenn kein dau das proggi zu gesicht bekommt ;)


gruß günni

Verfasst: Sonntag 4. Juli 2004, 10:44
von hanspeter
Mir gehts mit dem Tastendruck auch nicht anders. Ich hab schon Tage
über Tage in Foren FAQs und der python-hilfe nach Lösungen gesucht und frage mich langsam:
Das Problem muss doch allgemein bekannt und gefragt sein.
Man braucht sowas doch ziemlich oft, eine Abbruchbedingung bei Tastendruck. Wieso gibts denn dafür keine vernünftige Lösung?
Is mir irgendwie unbegreiflich...

Also verbringen wir weiter mit Suchen

Verfasst: Sonntag 4. Juli 2004, 16:13
von Christopy
Unter Windows geht sowas mit msvcrt.kbhit().

Unter Linux könnte es mit select.select() funktionieren.
Dazu ein Zitat aus der Linuxgazette:
To wait for a characters on a file (or socket), use select(). If you apply this to stdin then select() will unblock when someone presses a key. If the timeouts are tuned to 0, then it will exit immediately with a failure or success code indicating that a key is ready to be read.

Wenn das nicht funktioniert, kann man evt. noch auf curses zurückgreifen.
The nodelay() option causes getch() to be a non-blocking call.