mir ist aufgefallen: man kann das letzte Zeichen im Terminal mit curses nicht beschreiben.
Hier ein Beispielcode:
Code: Alles auswählen
import curses
def main(mainwin):
y, x = mainwin.getmaxyx()
mainwin.addch(0, 0, 'A')
mainwin.addch(0, x-1, 'A')
mainwin.addch(y-1, 0, 'A')
# mainwin.addch(y-1, x-1, 'A')
mainwin.addch(y-1, x-2, 'A')
mainwin.refresh()
c = mainwin.getch()
if __name__ == "__main__":
curses.wrapper(main)
Wenn man die auskommentierte Zeile aber wieder aktiviert kommt es leider zum Fehler.
Das tut nichts weiter als die Dimensionen des Terminals zu ermitteln und die die Ecken ein großes 'A' zu schreiben.
Das funktioniert auch wunderbar oben links, oben rechts und unten links.
Wo es nicht funktioniert: unten rechts. Dort bricht das Programm so ab als wenn außerhalb des Terminals geschrieben wurde. Ich denke das liegt daran, dass der Cursor nach Eingabe des Zeichens ja ein Zeichen weiterspringt. Und dann ist er außerhalb des Terminals. Springen in eine neue Zeile ist ja anschließend nicht mehr möglich, da kommt ja nichts mehr.
Ich hab schon überlegt ob man das Terminal vielleicht irgendwie in einen "Überschreibmodus" versetzen kann, also so, dass der cursor auf der beschriebenen Position verweilt und nicht weiter springt.
Leider habe ich noch nicht herausgefunden wie das gehen könnte.
Hat jemand einen Tipp wie man auch in der unteren rechten Ecke eine Zeichen mit curses setzen kann?
Danke und Gruß
Sparrow