Programm beenden

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
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

hey Leutz!

ich hab neu angefangen mit Python und hab ein erste Programm am start!
es soll bei eingaben von 0-9 in verschiedene Funktionen gehen! Klappt wunderbar. jetzt zu meiner frage:
wie kann ich es machen, dass das Prog nach drücken der "ESC"-Taste beendet wird?
if(eingabe== :?: ):
#programm beenden!

so soll es in etwas aussehen... muss ich da irgendwas mit dem ASCCII machen oder so?

Vielen Dank
Gruß Timo
Never touch a running system...
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

benutzt du raw_input? Wenn ja, dann geht das nicht, da raw_input immer eine Zeile liest.

Du musst schon ein bisschen mehr Informationen geben.
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

also eigentlich benutze ich raw_input, aber wenns damit net geht, dann mach nen anderen vorschlag!

kann ich irgendwie ein zeichen abgreifen, dass ich gedrückt habe?
Never touch a running system...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Alpha-Phonix hat geschrieben:kann ich irgendwie ein zeichen abgreifen, dass ich gedrückt habe?
msvcrt.getch(), aber nur unter Windows (ich vermute mal, dass du Windows hast).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

ja hab ich!

kannst du mir grad in meinem beispiel sagen, wie die die taste "ESC" genau in der if-Schleife abgreifen kann?
wäre supi!
Never touch a running system...
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Wahrscheinlich so (ungetestet)

Code: Alles auswählen

import msvcrt
while 1:
  ch = msvcrt.getch()
  print "Taste %c gedrückt" % ch
  if ch == '0':
    Menu0()
  elif ch == '1':
    Menu1()
  elif ...
  elif ch == 27: #ESC
    break
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das geht etwa so:

Code: Alles auswählen

#!/usr/bin/python
# -*- encoding: latin-1 -*- 
import msvcrt

esc = '\x1b'

ch = msvcrt.getch()
if ch == esc:
    print 'Escape'
else:
    print 'Etwas anderes'
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

ah ok vielen dank und jetzt wollte ich fragen, ob es einen Befehl gibt, der das Programm beendet?

also wenn ich ESC drück gibt er das jetzt aus, was in der print Anweisung steht, dass soll jetzt mit einem Befehl ersetzt werden, der das Programm beendet!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Anonymous hat geschrieben:ah ok vielen dank und jetzt wollte ich fragen, ob es einen Befehl gibt, der das Programm beendet?
sys.exit()

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

buar geil hat geklappt vielen dank! :D

gibt es in python auch eine clear-screen funktion?

also wenn ich in meinem menü die 2 drück für konturen berechnen, dass er den screen wieder leert??!!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich denke das kann man über curses machen, aber IMHO nur unter Linux... Ansonsten macht es einfach unter windows mit os.system("cls")

EDIT: Stimmt: Nicht clear, sondern cls :)
Zuletzt geändert von jens am Freitag 13. Januar 2006, 11:47, insgesamt 1-mal geändert.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Anonymous hat geschrieben:gibt es in python auch eine clear-screen funktion?
Nein nicht wirklich. Unter Windows kannst du das Programm cls starten, welches das tut oder das Modul WConIO. Unter Linux geht das wohl mit curses.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Leonidas hat geschrieben:Unter Linux geht das wohl mit curses.
Oder in 99% der Fälle auch mit

Code: Alles auswählen

import sys
sys.stdout.write("\n\033[2K\033[1d")
"print" würde auch gehen, nur wärst du danach in der 2. Zeile bzw. in der 2. Spalte der ersten Zeile (wenn du print "...", schreibt)
Antworten