curses - "Error opening terminal"

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Montag 24. April 2006, 10:11

Hallo allerseits!

Wenn man ein Terminal benutzt, dass von der curses-Bibliothek nicht unterstuetzt wird, bekommt man beim Ausfuehren eines curses-Skripts die Fehlermeldung

Code: Alles auswählen

Error opening terminal: some_term.
und das Programm beendet sich. Ich frage mich, ob es irgendeine Moeglichkeit gibt, das abzufangen? Ich wuerde gerne dem User etwas ausfuehrlichere Informationen mitliefern, wenn dieses Problem auftritt. Dummerweise scheint da keine Exception im Spiel zu sein: Mit TERM=some_term produziert

Code: Alles auswählen

#! /usr/bin/env python

import curses

try:
    stdscr = curses.initscr()
    curses.endwin()
except:
    print "Error!"

print "Bye!"
einfach nur die oben genannte Fehlermeldung. :roll:

Mmh...
Python Doku hat geschrieben:initscr()
[...] Note: If there is an error opening the terminal, the underlying curses library may cause the interpreter to exit.
... wie genau habe ich mir 'cause the interpreter to exit' vorzustellen?
BlackJack

Montag 24. April 2006, 22:22

Rebecca hat geschrieben:Mmh...
Python Doku hat geschrieben:initscr()
[...] Note: If there is an error opening the terminal, the underlying curses library may cause the interpreter to exit.
... wie genau habe ich mir 'cause the interpreter to exit' vorzustellen?
Darunter hast Du Dir vorzustellen, dass die curses Bibliothek, also der Teil der mit Python eigentlich nichts zu tun hat, die C-Funktion `exit()` aufruft und damit Dein Programm beendet. Das ist irgendwie blöd, aber von Python aus wohl nicht zu verhindern.

Würgaround wäre es vielleicht ein Skript von Deinem eigentlichen Skript zu starten, das nur versucht `curses` zu benutzen und einen entsprechenden Rückgabewert liefert, wenn es geklappt hat.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dienstag 25. April 2006, 10:00

BlackJack hat geschrieben:Würgaround wäre es vielleicht ein Skript von Deinem eigentlichen Skript zu starten, das nur versucht `curses` zu benutzen und einen entsprechenden Rückgabewert liefert, wenn es geklappt hat.
Auf die Idee bin ich ja noch gar nicht gekommen! :)
Naja, mal sehen...
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 25. April 2006, 15:51

Oder mit Hilfe von atexit was tricksen. Aber da die unterliegende curses lib den exit erreicht wird das nicht unbedingt helfen. :(
TUFKAB – the user formerly known as blackbird
Antworten