curses — Terminalbehandlung für zeichenbasierte Anzeigen

Quellcode: Lib/curses


Das Modul curses bietet eine Schnittstelle zur curses-Bibliothek, dem De-facto-Standard für portable erweiterte Terminalbehandlung.

Obwohl curses am weitesten in der Unix-Umgebung verbreitet ist, gibt es Versionen für Windows, DOS und möglicherweise auch für andere Systeme. Dieses Erweiterungsmodul ist darauf ausgelegt, die API von ncurses nachzubilden, einer Open-Source-Curses-Bibliothek, die unter Linux und den BSD-Varianten von Unix gehostet wird.

Verfügbarkeit: nicht Android, nicht iOS, nicht WASI.

Dieses Modul wird auf mobilen Plattformen oder WebAssembly-Plattformen nicht unterstützt.

Hinweis

Wo immer in der Dokumentation von einem Zeichen die Rede ist, kann dies als ganze Zahl, als Unicode-Zeichenkette mit einem Zeichen oder als Byte-Zeichenkette mit einem Byte angegeben werden.

Wo immer in der Dokumentation von einer Zeichenkette die Rede ist, kann dies als Unicode-Zeichenkette oder als Byte-Zeichenkette angegeben werden.

Siehe auch

Modul curses.ascii

Dienstprogramme für die Arbeit mit ASCII-Zeichen, unabhängig von Ihren Ländereinstellung.

Modul curses.panel

Eine Panel-Stack-Erweiterung, die curses-Fenstern Tiefe verleiht.

Modul curses.textpad

Editierbares Text-Widget für Curses, das Emacs-ähnliche Bindungen unterstützt.Emacs

Curses-Programmierung mit Python

Tutorial-Material zur Verwendung von curses mit Python von Andrew Kuchling und Eric Raymond.

Funktionen

Das Modul curses definiert die folgende Ausnahme

exception curses.error

Ausnahme, die ausgelöst wird, wenn eine Funktion der curses-Bibliothek einen Fehler zurückgibt.

Hinweis

Wenn x- oder y-Argumente einer Funktion oder Methode optional sind, werden sie mit der aktuellen Cursorposition gefüllt. Wenn attr optional ist, wird standardmäßig A_NORMAL verwendet.

Das Modul curses definiert die folgenden Funktionen

curses.assume_default_colors(fg, bg, /)

Erlaubt die Verwendung von Standardwerten für Farben auf Terminals, die diese Funktion unterstützen. Verwenden Sie dies zur Unterstützung von Transparenz in Ihrer Anwendung.

  • Weist den Standard-Vordergrund-/Hintergrundfarben des Terminals die Farbnummer -1 zu. So wird init_pair(x, COLOR_RED, -1) das Paar x als Rot auf Standardhintergrund initialisieren und init_pair(x, -1, COLOR_BLUE) initialisiert das Paar x als Standardvordergrund auf Blau.

  • Ändert die Definition des Farbpaares 0 auf (fg, bg).

Hinzugefügt in Version 3.14.

curses.baudrate()

Gibt die Ausgabegeschwindigkeit des Terminals in Bits pro Sekunde zurück. Bei Software-Terminalemulatoren hat sie einen festen hohen Wert. Aus historischen Gründen enthalten; in früheren Zeiten wurde sie verwendet, um Schleifen für Zeitverzögerungen zu schreiben und gelegentlich Schnittstellen je nach Leitungsgeschwindigkeit zu ändern.

curses.beep()

Gibt ein kurzes Aufmerksamkeitsgeräusch aus.

curses.can_change_color()

Gibt True oder False zurück, je nachdem, ob der Programmierer die auf dem Terminal angezeigten Farben ändern kann.

curses.cbreak()

Gibt den cbreak-Modus ein. Im cbreak-Modus (manchmal „rare“-Modus genannt) ist die normale TTY-Zeilenpufferung ausgeschaltet, und Zeichen können einzeln gelesen werden. Im Gegensatz zum Raw-Modus behalten jedoch Sonderzeichen (Unterbrechung, Beendigung, Unterbrechung und Flusskontrolle) ihre Wirkung auf den TTY-Treiber und das aufrufende Programm. Das Aufrufen von raw() gefolgt von cbreak() belässt das Terminal im cbreak-Modus.

curses.color_content(color_number)

Gibt die Intensität der Rot-, Grün- und Blaukomponenten (RGB) der Farbe color_number zurück, die zwischen 0 und COLORS - 1 liegen muss. Gibt ein 3-Tupel zurück, das die R, G, B-Werte für die angegebene Farbe enthält, die zwischen 0 (keine Komponente) und 1000 (maximale Menge einer Komponente) liegen.

curses.color_pair(pair_number)

Gibt den Attributwert für die Anzeige von Text im angegebenen Farbpaar zurück. Nur die ersten 256 Farbpaare werden unterstützt. Dieser Attributwert kann mit A_STANDOUT, A_REVERSE und den anderen A_*-Attributen kombiniert werden. pair_number() ist das Gegenstück zu dieser Funktion.

curses.curs_set(visibility)

Setzt den Cursorzustand. visibility kann auf 0, 1 oder 2 gesetzt werden, für unsichtbar, normal oder sehr sichtbar. Wenn das Terminal die angeforderte Sichtbarkeit unterstützt, wird der vorherige Cursorzustand zurückgegeben; andernfalls wird eine Ausnahme ausgelöst. Auf vielen Terminals ist der „sichtbare“ Modus ein Unterstrich-Cursor und der „sehr sichtbare“ Modus ein Block-Cursor.

curses.def_prog_mode()

Speichert den aktuellen Terminalmodus als „Programmmodus“, den Modus, in dem das laufende Programm curses verwendet. (Sein Gegenstück ist der „Shell-Modus“ für die Zeit, in der das Programm curses nicht verwendet.) Nachfolgende Aufrufe von reset_prog_mode() stellen diesen Modus wieder her.

curses.def_shell_mode()

Speichert den aktuellen Terminalmodus als „Shell-Modus“, den Modus, in dem das laufende Programm keine curses-Funktionen verwendet. (Sein Gegenstück ist der „Programmmodus“, in dem das Programm curses-Funktionen nutzt.) Nachfolgende Aufrufe von reset_shell_mode() stellen diesen Modus wieder her.

curses.delay_output(ms)

Fügt eine Pause von ms Millisekunden in die Ausgabe ein.

curses.doupdate()

Aktualisiert den physischen Bildschirm. Die curses-Bibliothek verwaltet zwei Datenstrukturen, eine, die den aktuellen Inhalt des physischen Bildschirms darstellt, und einen virtuellen Bildschirm, der den gewünschten nächsten Zustand darstellt. Die Funktion doupdate() aktualisiert den physischen Bildschirm, um mit dem virtuellen Bildschirm übereinzustimmen.

Der virtuelle Bildschirm kann durch einen Aufruf von noutrefresh() nach Schreiboperationen wie addstr() auf einem Fenster aktualisiert werden. Der normale refresh()-Aufruf ist einfach noutrefresh() gefolgt von doupdate(); wenn Sie mehrere Fenster aktualisieren müssen, können Sie die Leistung verbessern und möglicherweise Bildschirmflimmern reduzieren, indem Sie noutrefresh()-Aufrufe für alle Fenster ausführen, gefolgt von einem einzigen doupdate().

curses.echo()

Gibt den Echo-Modus ein. Im Echo-Modus wird jedes eingegebene Zeichen beim Tippen auf den Bildschirm übertragen.

curses.endwin()

Deinitialisiert die Bibliothek und stellt das Terminal in den Normalzustand zurück.

curses.erasechar()

Gibt das aktuelle Löschzeichen des Benutzers als ein Byte-Bytes-Objekt zurück. Unter Unix-Betriebssystemen ist dies eine Eigenschaft des steuernden TTY des curses-Programms und wird nicht von der curses-Bibliothek selbst gesetzt.

curses.filter()

Die Routine filter() muss, wenn sie verwendet wird, vor dem Aufruf von initscr() aufgerufen werden. Die Auswirkung ist, dass während dieser Aufrufe LINES auf 1 gesetzt wird; die Fähigkeiten clear, cup, cud, cud1, cuu1, cuu, vpa deaktiviert sind; und der home-String auf den Wert von cr gesetzt wird. Die Auswirkung ist, dass der Cursor auf die aktuelle Zeile beschränkt ist, ebenso wie die Bildschirmaktualisierungen. Dies kann zur Aktivierung der zeichenweisen Zeilenbearbeitung verwendet werden, ohne den Rest des Bildschirms zu beeinträchtigen.

curses.flash()

Flimmert den Bildschirm. Das heißt, er wird kurzzeitig in Umkehrdarstellung und dann wieder zurück geändert. Manche Leute ziehen ein solches „sichtbares Klingeln“ dem akustischen Aufmerksamkeitsignal von beep() vor.

curses.flushinp()

Leert alle Eingabepuffer. Dies verwirft jegliche vom Benutzer eingegebene Tipperei, die das Programm noch nicht verarbeitet hat.

curses.getmouse()

Nachdem getch() KEY_MOUSE zurückgibt, um ein Mausereignis zu signalisieren, sollte diese Methode aufgerufen werden, um das in der Warteschlange befindliche Mausereignis abzurufen, das als 5-Tupel (id, x, y, z, bstate) dargestellt wird. id ist ein ID-Wert zur Unterscheidung mehrerer Geräte, und x, y, z sind die Koordinaten des Ereignisses. (z wird derzeit nicht verwendet.) bstate ist ein ganzzahliger Wert, dessen Bits gesetzt werden, um die Art des Ereignisses anzugeben, und der die bitweise OR-Verknüpfung von einem oder mehreren der folgenden Konstanten ist, wobei n die Schaltflächennummer von 1 bis 5 ist: BUTTONn_PRESSED, BUTTONn_RELEASED, BUTTONn_CLICKED, BUTTONn_DOUBLE_CLICKED, BUTTONn_TRIPLE_CLICKED, BUTTON_SHIFT, BUTTON_CTRL, BUTTON_ALT.

Geändert in Version 3.10: Die Konstanten BUTTON5_* werden nun angezeigt, wenn sie von der zugrunde liegenden curses-Bibliothek bereitgestellt werden.

curses.getsyx()

Gibt die aktuellen Koordinaten des virtuellen Bildschirmcursors als Tupel (y, x) zurück. Wenn leaveok derzeit True ist, wird (-1, -1) zurückgegeben.

curses.getwin(file)

Liest fensterbezogene Daten, die zuvor mit einem Aufruf von window.putwin() in der Datei gespeichert wurden. Die Routine erstellt und initialisiert dann ein neues Fenster mit diesen Daten und gibt das neue Fensterobjekt zurück.

curses.has_colors()

Gibt True zurück, wenn das Terminal Farben anzeigen kann; andernfalls False.

curses.has_extended_color_support()

Gibt True zurück, wenn das Modul erweiterte Farben unterstützt; andernfalls False. Erweiterte Farbuntersützung ermöglicht mehr als 256 Farbpaare für Terminals, die mehr als 16 Farben unterstützen (z. B. xterm-256color).

Erweiterte Farbuntersützung erfordert ncurses Version 6.1 oder neuer.

Hinzugefügt in Version 3.10.

curses.has_ic()

Gibt True zurück, wenn das Terminal Einfüge- und Löschzeichenfähigkeiten hat. Diese Funktion ist nur aus historischen Gründen enthalten, da alle modernen Software-Terminalemulatoren solche Fähigkeiten besitzen.

curses.has_il()

Gibt True zurück, wenn das Terminal Einfüge- und Löschzeilenfähigkeiten hat oder diese durch Bildlaufregionen simulieren kann. Diese Funktion ist nur aus historischen Gründen enthalten, da alle modernen Software-Terminalemulatoren solche Fähigkeiten besitzen.

curses.has_key(ch)

Nimmt einen Tastaturwert ch und gibt True zurück, wenn der aktuelle Terminaltyp eine Taste mit diesem Wert erkennt.

curses.halfdelay(tenths)

Wird für den Halbdauer-Modus verwendet, der dem cbreak-Modus ähnelt, da vom Benutzer eingegebene Zeichen sofort für das Programm verfügbar sind. Nach einer Blockierung von tenths Zehntelsekunden wird jedoch eine Ausnahme ausgelöst, wenn nichts eingegeben wurde. Der Wert von tenths muss eine Zahl zwischen 1 und 255 sein. Verwenden Sie nocbreak(), um den Halbdauer-Modus zu verlassen.

curses.init_color(color_number, r, g, b)

Ändert die Definition einer Farbe, indem die Nummer der zu ändernden Farbe gefolgt von drei RGB-Werten (für die Mengen von Rot-, Grün- und Blaukomponenten) übergeben wird. Der Wert von color_number muss zwischen 0 und COLORS - 1 liegen. Jeder der Werte r, g, b muss zwischen 0 und 1000 liegen. Wenn init_color() verwendet wird, ändern sich alle Vorkommen dieser Farbe auf dem Bildschirm sofort auf die neue Definition. Diese Funktion ist auf den meisten Terminals eine No-Op; sie ist nur aktiv, wenn can_change_color() True zurückgibt.

curses.init_pair(pair_number, fg, bg)

Ändert die Definition eines Farbpaares. Sie nimmt drei Argumente entgegen: die Nummer des zu ändernden Farbpaares, die Nummer der Vordergrundfarbe und die Nummer der Hintergrundfarbe. Der Wert von pair_number muss zwischen 1 und COLOR_PAIRS - 1 liegen (das Farbpaar 0 kann nur von use_default_colors() und assume_default_colors() geändert werden). Der Wert der Argumente fg und bg muss zwischen 0 und COLORS - 1 liegen oder, nach dem Aufruf von use_default_colors() oder assume_default_colors(), -1. Wenn das Farbpaar zuvor initialisiert wurde, wird der Bildschirm aktualisiert und alle Vorkommen dieses Farbpaares werden auf die neue Definition geändert.

curses.initscr()

Initialisiert die Bibliothek. Gibt ein Fenster-Objekt zurück, das den gesamten Bildschirm darstellt.

Hinweis

Wenn beim Öffnen des Terminals ein Fehler auftritt, kann die zugrunde liegende curses-Bibliothek den Interpreter zum Beenden veranlassen.

curses.is_term_resized(nlines, ncols)

Gibt True zurück, wenn resize_term() die Fensterstruktur modifizieren würde, andernfalls False.

curses.isendwin()

Gibt True zurück, wenn endwin() aufgerufen wurde (d. h. die curses-Bibliothek wurde deinitialisiert).

curses.keyname(k)

Gibt den Namen der Taste mit der Nummer k als Bytes-Objekt zurück. Der Name einer Taste, die ein druckbares ASCII-Zeichen erzeugt, ist das Zeichen der Taste. Der Name einer Steuerzeichenkombination ist ein zweibaitiges Bytes-Objekt, das aus einem Caret (b'^') gefolgt vom entsprechenden druckbaren ASCII-Zeichen besteht. Der Name einer Alt-Tastenkombination (128–255) ist ein Bytes-Objekt, das aus dem Präfix b'M-' gefolgt vom Namen des entsprechenden ASCII-Zeichens besteht.

curses.killchar()

Gibt das aktuelle Zeilenlöschzeichen des Benutzers als ein Byte-Bytes-Objekt zurück. Unter Unix-Betriebssystemen ist dies eine Eigenschaft des steuernden TTY des curses-Programms und wird nicht von der curses-Bibliothek selbst gesetzt.

curses.longname()

Gibt ein Bytes-Objekt mit dem Terminfo-Langnamenfeld zurück, das das aktuelle Terminal beschreibt. Die maximale Länge einer ausführlichen Beschreibung beträgt 128 Zeichen. Sie ist nur nach dem Aufruf von initscr() definiert.

curses.meta(flag)

Wenn flag True ist, werden 8-Bit-Zeichen zur Eingabe zugelassen. Wenn flag False ist, sind nur 7-Bit-Zeichen erlaubt.

curses.mouseinterval(interval)

Legt die maximale Zeit in Millisekunden fest, die zwischen einem Druck- und einem Loslassereignis vergehen kann, damit diese als Klick erkannt werden, und gibt den vorherigen Intervallwert zurück. Der Standardwert beträgt 200 Millisekunden oder ein Fünftel Sekunde.

curses.mousemask(mousemask)

Legt die zu meldenden Mausereignisse fest und gibt ein Tupel (availmask, oldmask) zurück. availmask gibt an, welche der angegebenen Mausereignisse gemeldet werden können; bei vollständigem Fehlschlag wird 0 zurückgegeben. oldmask ist der vorherige Wert der Mausereignismaske des angegebenen Fensters. Wenn diese Funktion nie aufgerufen wird, werden niemals Mausereignisse gemeldet.

curses.napms(ms)

Wartet ms Millisekunden.

curses.newpad(nlines, ncols)

Erstellt und gibt einen Zeiger auf eine neue Pad-Datenstruktur mit der angegebenen Anzahl von Zeilen und Spalten zurück. Gibt ein Pad als Fensterobjekt zurück.

Ein Pad ist wie ein Fenster, außer dass es nicht durch die Bildschirmgröße eingeschränkt ist und nicht notwendigerweise einem bestimmten Teil des Bildschirms zugeordnet ist. Pads können verwendet werden, wenn ein großes Fenster benötigt wird und nur ein Teil des Fensters zu einem bestimmten Zeitpunkt auf dem Bildschirm sichtbar ist. Automatische Aktualisierungen von Pads (z. B. durch Scrollen oder Echo von Eingaben) finden nicht statt. Die Methoden refresh() und noutrefresh() eines Pads erfordern 6 Argumente, um den Teil des Pads, der angezeigt werden soll, und die Position auf dem Bildschirm, die für die Anzeige verwendet werden soll, anzugeben. Die Argumente sind pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol; die p-Argumente beziehen sich auf die obere linke Ecke des anzuzeigenden Pad-Bereichs, und die s-Argumente definieren eine Clipping-Box auf dem Bildschirm, innerhalb derer der Pad-Bereich angezeigt werden soll.

curses.newwin(nlines, ncols)
curses.newwin(nlines, ncols, begin_y, begin_x)

Gibt ein neues Fenster zurück, dessen linke obere Ecke sich bei (begin_y, begin_x) befindet und dessen Höhe/Breite nlines/ncols beträgt.

Standardmäßig erstreckt sich das Fenster von der angegebenen Position bis zur unteren rechten Ecke des Bildschirms.

curses.nl()

Wechselt in den Zeilenumbruchmodus. Dieser Modus übersetzt die Eingabetaste in einen Zeilenumbruch bei der Eingabe und übersetzt Zeilenumbrüche in eine Eingabetaste und einen Zeilenvorschub bei der Ausgabe. Der Zeilenumbruchmodus ist standardmäßig aktiviert.

curses.nocbreak()

Verlässt den cbreak-Modus. Kehrt zum normalen „cooked“-Modus mit Zeilenpufferung zurück.

curses.noecho()

Verlässt den Echo-Modus. Das Spiegeln von Eingabezeichen ist deaktiviert.

curses.nonl()

Verlässt den Zeilenumbruchmodus. Deaktiviert die Übersetzung der Eingabetaste in einen Zeilenumbruch bei der Eingabe und deaktiviert die niedrigstufige Übersetzung von Zeilenumbrüchen in Zeilenumbruch/Eingabetaste bei der Ausgabe (ändert aber nicht das Verhalten von addch('\n'), was auf dem virtuellen Bildschirm immer die Entsprechung von Eingabetaste und Zeilenvorschub bewirkt). Wenn die Übersetzung deaktiviert ist, kann curses die vertikale Bewegung manchmal etwas beschleunigen; außerdem kann die Eingabetaste erkannt werden.

curses.noqiflush()

Wenn die Routine noqiflush() verwendet wird, erfolgt kein normales Leeren der Eingabe- und Ausgabewarteschlangen, die mit den Zeichen INTR, QUIT und SUSP verbunden sind. Sie möchten möglicherweise noqiflush() in einem Signalhandler aufrufen, wenn die Ausgabe fortgesetzt werden soll, als ob der Unterbrechung nicht stattgefunden hätte, nachdem der Handler beendet wurde.

curses.noraw()

Verlässt den Raw-Modus. Kehrt zum normalen „cooked“-Modus mit Zeilenpufferung zurück.

curses.pair_content(pair_number)

Gibt ein Tupel (fg, bg) zurück, das die Farben für das angeforderte Farbpaar enthält. Der Wert von pair_number muss zwischen 0 und COLOR_PAIRS - 1 liegen.

curses.pair_number(attr)

Gibt die Nummer des durch den Attributwert attr gesetzten Farbpaares zurück. color_pair() ist das Gegenstück zu dieser Funktion.

curses.putp(str)

Entspricht tputs(str, 1, putchar); gibt den Wert einer angegebenen Terminfo-Fähigkeit für das aktuelle Terminal aus. Beachten Sie, dass die Ausgabe von putp() immer an die Standardausgabe geht.

curses.qiflush([flag])

Wenn flag False ist, hat dies dieselbe Wirkung wie der Aufruf von noqiflush(). Wenn flag True ist oder kein Argument übergeben wird, werden die Warteschlangen geleert, wenn diese Steuerzeichen gelesen werden.

curses.raw()

Wechselt in den Raw-Modus. Im Raw-Modus sind die normale Zeilenpufferung und die Verarbeitung von Unterbrechungs-, Abfrage-, Suspend- und Flusskontrolltasten deaktiviert; Zeichen werden einzeln an die curses-Eingabefunktionen übergeben.

curses.reset_prog_mode()

Stellt das Terminal in den „Programm“-Modus zurück, wie er zuvor von def_prog_mode() gespeichert wurde.

curses.reset_shell_mode()

Stellt das Terminal in den „Shell“-Modus zurück, wie er zuvor von def_shell_mode() gespeichert wurde.

curses.resetty()

Stellt die Terminalmodi auf den Zustand zurück, der beim letzten Aufruf von savetty() gespeichert wurde.

curses.resize_term(nlines, ncols)

Backend-Funktion, die von resizeterm() verwendet wird und den Großteil der Arbeit erledigt; beim Ändern der Größe von Fenstern füllt resize_term() die erweiterten Bereiche mit Leerzeichen auf. Die aufrufende Anwendung sollte diese Bereiche mit geeigneten Daten füllen. Die Funktion resize_term() versucht, alle Fenster in der Größe zu ändern. Aufgrund der Aufrufkonvention von Pads ist es jedoch ohne zusätzliche Interaktion mit der Anwendung nicht möglich, diese in der Größe zu ändern.

curses.resizeterm(nlines, ncols)

Ändert die Größe der Standard- und aktuellen Fenster auf die angegebenen Dimensionen und passt andere Buchhaltungsdaten, die von der curses-Bibliothek zur Aufzeichnung der Fensterdimensionen verwendet werden (insbesondere den SIGWINCH-Handler), an.

curses.savetty()

Speichert den aktuellen Zustand der Terminalmodi in einem Puffer, der von resetty() verwendet werden kann.

curses.get_escdelay()

Ruft den von set_escdelay() gesetzten Wert ab.

Hinzugefügt in Version 3.9.

curses.set_escdelay(ms)

Legt die Anzahl der Millisekunden fest, die nach dem Lesen eines Escape-Zeichens gewartet werden soll, um zwischen einem einzelnen Escape-Zeichen, das auf der Tastatur eingegeben wurde, und Escape-Sequenzen, die von Cursor- und Funktionstasten gesendet werden, zu unterscheiden.

Hinzugefügt in Version 3.9.

curses.get_tabsize()

Ruft den von set_tabsize() gesetzten Wert ab.

Hinzugefügt in Version 3.9.

curses.set_tabsize(size)

Legt die Anzahl der Spalten fest, die von der curses-Bibliothek beim Umwandeln eines Tabulatorzeichens in Leerzeichen verwendet werden, wenn der Tabulator zu einem Fenster hinzugefügt wird.

Hinzugefügt in Version 3.9.

curses.setsyx(y, x)

Setzt den Cursor des virtuellen Bildschirms auf y, x. Wenn y und x beide -1 sind, wird leaveok auf True gesetzt.

curses.setupterm(term=None, fd=-1)

Initialisiert das Terminal. term ist ein String, der den Terminalnamen angibt, oder None; wenn er weggelassen wird oder None ist, wird der Wert der Umgebungsvariable TERM verwendet. fd ist der Dateideskriptor, an den alle Initialisierungssequenzen gesendet werden; wenn er nicht angegeben wird oder -1 ist, wird der Dateideskriptor für sys.stdout verwendet.

curses.start_color()

Muss aufgerufen werden, wenn der Programmierer Farben verwenden möchte, und zwar vor dem Aufruf einer anderen routine zur Farbmanipulation. Es ist eine gute Praxis, diese Routine direkt nach initscr() aufzurufen.

start_color() initialisiert acht Grundfarben (Schwarz, Rot, Grün, Gelb, Blau, Magenta, Cyan und Weiß) und zwei globale Variablen im Modul curses, COLORS und COLOR_PAIRS, die die maximale Anzahl von Farben und Farbpaaren enthalten, die das Terminal unterstützen kann. Außerdem werden die Farben auf dem Terminal auf die Werte zurückgesetzt, die sie hatten, als das Terminal gerade eingeschaltet wurde.

curses.termattrs()

Gibt eine logische OR-Verknüpfung aller vom Terminal unterstützten Videoattribute zurück. Diese Information ist nützlich, wenn ein curses-Programm die vollständige Kontrolle über das Erscheinungsbild des Bildschirms benötigt.

curses.termname()

Gibt den Wert der Umgebungsvariable TERM als Byte-Objekt zurück, abgeschnitten auf 14 Zeichen.

curses.tigetflag(capname)

Gibt den Wert der booleschen Fähigkeit zurück, die dem Terminfo-Fähigkeitsnamen capname entspricht, als Ganzzahl. Gibt den Wert -1 zurück, wenn capname keine boolesche Fähigkeit ist, oder 0, wenn sie aufgehoben oder in der Terminalbeschreibung fehlt.

curses.tigetnum(capname)

Gibt den Wert der numerischen Fähigkeit zurück, die dem Terminfo-Fähigkeitsnamen capname entspricht, als Ganzzahl. Gibt den Wert -2 zurück, wenn capname keine numerische Fähigkeit ist, oder -1, wenn sie aufgehoben oder in der Terminalbeschreibung fehlt.

curses.tigetstr(capname)

Gibt den Wert der Zeichenfolgen-Fähigkeit zurück, die dem Terminfo-Fähigkeitsnamen capname entspricht, als Byte-Objekt. Gibt None zurück, wenn capname keine Terminfo-„String-Fähigkeit“ ist oder aufgehoben oder in der Terminalbeschreibung fehlt.

curses.tparm(str[, ...])

Instanziiert das Byte-Objekt str mit den übergebenen Parametern, wobei str eine parametrisierte Zeichenfolge sein sollte, die aus der Terminfo-Datenbank abgerufen wurde. Z.B. könnte tparm(tigetstr("cup"), 5, 3) zu b'\033[6;4H' führen, wobei das genaue Ergebnis vom Terminaltyp abhängt.

curses.typeahead(fd)

Gibt an, dass der Dateideskriptor fd für die Typen-Überprüfung verwendet werden soll. Wenn fd -1 ist, wird keine Typen-Überprüfung durchgeführt.

Die curses-Bibliothek optimiert die Zeilenunterbrechung, indem sie beim Aktualisieren des Bildschirms periodisch auf Typen prüft. Wenn Eingaben gefunden werden und diese von einem TTY stammen, wird die aktuelle Aktualisierung bis zum erneuten Aufruf von refresh oder doupdate verzögert, was eine schnellere Reaktion auf im Voraus eingegebene Befehle ermöglicht. Diese Funktion ermöglicht die Angabe eines anderen Dateideskriptors für die Typen-Überprüfung.

curses.unctrl(ch)

Gibt ein Byte-Objekt zurück, das eine druckbare Darstellung des Zeichens ch ist. Steuerzeichen werden als Caret gefolgt vom Zeichen dargestellt, z. B. als b'^C'. Druckbare Zeichen bleiben unverändert.

curses.ungetch(ch)

Schiebt ch in die Warteschlange, sodass der nächste getch()-Aufruf es zurückgibt.

Hinweis

Vor dem Aufruf von getch() kann nur ein ch vorgeschoben werden.

curses.update_lines_cols()

Aktualisiert die Modulvariablen LINES und COLS. Nützlich zur Erkennung manueller Bildschirmgrößenänderungen.

Hinzugefügt in Version 3.5.

curses.unget_wch(ch)

Schiebt ch in die Warteschlange, sodass der nächste get_wch()-Aufruf es zurückgibt.

Hinweis

Vor dem Aufruf von get_wch() kann nur ein ch vorgeschoben werden.

Hinzugefügt in Version 3.3.

curses.ungetmouse(id, x, y, z, bstate)

Schiebt ein KEY_MOUSE-Ereignis in die Eingabewarteschlange und ordnet ihm die angegebenen Zustandsdaten zu.

curses.use_env(flag)

Wenn diese Funktion verwendet wird, sollte sie vor dem Aufruf von initscr() oder newterm aufgerufen werden. Wenn flag False ist, werden die in der Terminfo-Datenbank angegebenen Werte für Zeilen und Spalten verwendet, auch wenn die Umgebungsvariablen LINES und COLUMNS (standardmäßig verwendet) gesetzt sind oder wenn curses in einem Fenster ausgeführt wird (in diesem Fall wäre das Standardverhalten, die Fenstergröße zu verwenden, wenn LINES und COLUMNS nicht gesetzt sind).

curses.use_default_colors()

Entspricht assume_default_colors(-1, -1).

curses.wrapper(func, /, *args, **kwargs)

Initialisiert curses und ruft ein anderes aufrufbares Objekt auf, func, das den Rest Ihrer curses-Anwendung darstellen sollte. Wenn die Anwendung eine Ausnahme auslöst, stellt diese Funktion das Terminal wieder in einen ordnungsgemäßen Zustand her, bevor die Ausnahme erneut ausgelöst und ein Traceback generiert wird. Dem aufrufbaren Objekt func wird dann das Hauptfenster „stdscr“ als erstes Argument übergeben, gefolgt von allen anderen an wrapper() übergebenen Argumenten. Bevor func aufgerufen wird, schaltet wrapper() den cbreak-Modus ein, schaltet das Echo aus, aktiviert die Terminaltastatur und initialisiert Farben, wenn das Terminal Farbunterstützung hat. Beim Beenden (entweder normal oder durch Ausnahme) stellt es den Cooked-Modus wieder her, schaltet das Echo ein und deaktiviert die Terminaltastatur.

Fensterobjekte

class curses.window

Fensterobjekte, wie sie von initscr() und newwin() oben zurückgegeben werden, haben die folgenden Methoden und Attribute

window.addch(ch[, attr])
window.addch(y, x, ch[, attr])

Zeichnet das Zeichen ch an Position (y, x) mit den Attributen attr, wobei jedes zuvor an dieser Stelle gezeichnete Zeichen überschrieben wird. Standardmäßig sind die Zeichenposition und die Attribute die aktuellen Einstellungen für das Fensterobjekt.

Hinweis

Das Schreiben außerhalb des Fensters, Unterfensters oder Pads löst eine curses.error aus. Der Versuch, in die untere rechte Ecke eines Fensters, Unterfensters oder Pads zu schreiben, löst nach dem Drucken des Zeichens eine Ausnahme aus.

window.addnstr(str, n[, attr])
window.addnstr(y, x, str, n[, attr])

Zeichnet höchstens n Zeichen der Zeichenkette str an Position (y, x) mit Attributen attr und überschreibt alles, was zuvor auf dem Display war.

window.addstr(str[, attr])
window.addstr(y, x, str[, attr])

Zeichnet die Zeichenkette str an Position (y, x) mit Attributen attr und überschreibt alles, was zuvor auf dem Display war.

Hinweis

  • Das Schreiben außerhalb des Fensters, Unterfensters oder Pads löst curses.error aus. Der Versuch, in die untere rechte Ecke eines Fensters, Unterfensters oder Pads zu schreiben, löst nach dem Drucken der Zeichenfolge eine Ausnahme aus.

  • Ein Fehler in ncurses, dem Backend für dieses Python-Modul, kann zu Segfaults beim Ändern der Fenstergröße führen. Dies ist in ncurses-6.1-20190511 behoben. Wenn Sie eine ältere ncurses-Version verwenden, können Sie dies vermeiden, wenn Sie addstr() nicht mit einem str aufrufen, das eingebettete Zeilenumbrüche enthält. Rufen Sie stattdessen addstr() separat für jede Zeile auf.

window.attroff(attr)

Entfernt das Attribut attr aus dem „Hintergrund“-Set, das auf alle Schreibvorgänge im aktuellen Fenster angewendet wird.

window.attron(attr)

Fügt das Attribut attr zum „Hintergrund“-Set hinzu, das auf alle Schreibvorgänge im aktuellen Fenster angewendet wird.

window.attrset(attr)

Setzt das „Hintergrund“-Set von Attributen auf attr. Dieses Set ist anfänglich 0 (keine Attribute).

window.bkgd(ch[, attr])

Setzt den Hintergrund des Fensters auf das Zeichen ch mit Attributen attr. Die Änderung wird dann auf jede Zeichenposition in diesem Fenster angewendet.

  • Das Attribut jedes Zeichens im Fenster wird auf das neue Hintergrundattribut geändert.

  • Wo immer das frühere Hintergrundzeichen erscheint, wird es durch das neue Hintergrundzeichen ersetzt.

window.bkgdset(ch[, attr])

Setzt den Hintergrund des Fensters. Ein Fensterhintergrund besteht aus einem Zeichen und einer beliebigen Kombination von Attributen. Der Attributteil des Hintergrunds wird mit allen Nicht-Leerzeichen kombiniert (per OR), die in das Fenster geschrieben werden. Sowohl das Zeichen als auch die Attributteile des Hintergrunds werden mit den Leerzeichen kombiniert. Der Hintergrund wird zu einer Eigenschaft des Zeichens und bewegt sich mit dem Zeichen durch alle Scroll-, Einfüge-/Löschzeilen/-zeichen-Operationen.

window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])

Zeichnet einen Rahmen um die Ränder des Fensters. Jeder Parameter gibt das Zeichen an, das für einen bestimmten Teil des Rahmens verwendet werden soll; siehe die Tabelle unten für weitere Details.

Hinweis

Ein Wert von 0 für einen Parameter bewirkt, dass für diesen Parameter das Standardzeichen verwendet wird. Schlüsselwortparameter sind *nicht* erlaubt. Die Standardwerte sind in dieser Tabelle aufgeführt.

Parameter

Beschreibung

Standardwert

ls

Linke Seite

ACS_VLINE

rs

Rechte Seite

ACS_VLINE

ts

Oben

ACS_HLINE

bs

Unten

ACS_HLINE

tl

Obere linke Ecke

ACS_ULCORNER

tr

Obere rechte Ecke

ACS_URCORNER

bl

Untere linke Ecke

ACS_LLCORNER

br

Untere rechte Ecke

ACS_LRCORNER

window.box([vertch, horch])

Ähnlich wie border(), aber sowohl ls als auch rs sind vertch und sowohl ts als auch bs sind horch. Die Standard-Eckzeichen werden von dieser Funktion immer verwendet.

window.chgat(attr)
window.chgat(num, attr)
window.chgat(y, x, attr)
window.chgat(y, x, num, attr)

Setzt die Attribute von num Zeichen an der aktuellen Cursorposition oder an der Position (y, x), falls angegeben. Wenn num nicht angegeben ist oder -1 ist, wird das Attribut auf alle Zeichen bis zum Ende der Zeile gesetzt. Diese Funktion bewegt den Cursor an die Position (y, x), falls angegeben. Die geänderte Zeile wird mit der Methode touchline() berührt, sodass der Inhalt beim nächsten Aufruf von refresh() neu gezeichnet wird.

window.clear()

Ähnlich wie erase(), bewirkt aber auch, dass das gesamte Fenster beim nächsten Aufruf von refresh() neu gezeichnet wird.

window.clearok(flag)

Wenn flag True ist, wird das Fenster beim nächsten Aufruf von refresh() vollständig gelöscht.

window.clrtobot()

Löscht vom Cursor bis zum Ende des Fensters: Alle Zeilen unterhalb des Cursors werden gelöscht und dann wird clrtoeol() ausgeführt.

window.clrtoeol()

Löscht vom Cursor bis zum Ende der Zeile.

window.cursyncup()

Aktualisiert die aktuelle Cursorposition aller Vorgänger des Fensters, um die aktuelle Cursorposition des Fensters widerzuspiegeln.

window.delch([y, x])

Löscht jedes Zeichen an (y, x).

window.deleteln()

Löscht die Zeile unter dem Cursor. Alle folgenden Zeilen werden eine Zeile nach oben verschoben.

window.derwin(begin_y, begin_x)
window.derwin(nlines, ncols, begin_y, begin_x)

Eine Abkürzung für „derive window“. derwin() ist dasselbe wie der Aufruf von subwin(), außer dass begin_y und begin_x relativ zum Ursprung des Fensters sind und nicht relativ zum gesamten Bildschirm. Gibt ein Fensterobjekt für das abgeleitete Fenster zurück.

window.echochar(ch[, attr])

Fügt das Zeichen ch mit dem Attribut attr hinzu und ruft sofort refresh() auf dem Fenster auf.

window.enclose(y, x)

Testet, ob das gegebene Paar von bildschirmrelativen Zeichenzellenkoordinaten von dem gegebenen Fenster umschlossen wird, und gibt True oder False zurück. Dies ist nützlich, um zu bestimmen, welche Untermenge der Bildschirmfenster den Ort eines Mausklicks umschließt.

Geändert in Version 3.10: Früher gab es 1 oder 0 anstelle von True oder False.

window.encoding

Codierung, die zum Codieren von Methodenargumenten (Unicode-Strings und Zeichen) verwendet wird. Das Attribut `encoding` wird vom Elternfenster geerbt, wenn ein Unterfenster erstellt wird, z. B. mit window.subwin(). Standardmäßig wird die aktuelle Locale-Codierung verwendet (siehe locale.getencoding()).

Hinzugefügt in Version 3.3.

window.erase()

Löscht das Fenster.

window.getbegyx()

Gibt ein Tupel (y, x) der Koordinaten der oberen linken Ecke zurück.

window.getbkgd()

Gibt das aktuelle Hintergrundzeichen/-attributpaar des angegebenen Fensters zurück.

window.getch([y, x])

Liest ein Zeichen. Beachten Sie, dass die zurückgegebene Ganzzahl *nicht* im ASCII-Bereich liegen muss: Funktionstasten, Tasten auf dem Ziffernblock usw. werden durch Zahlen größer als 255 dargestellt. Im No-Delay-Modus wird -1 zurückgegeben, wenn keine Eingabe vorhanden ist, andernfalls wartet er, bis eine Taste gedrückt wird.

window.get_wch([y, x])

Liest ein Wide-Character. Gibt ein Zeichen für die meisten Tasten oder eine Ganzzahl für Funktionstasten, Ziffernblocktasten und andere spezielle Tasten zurück. Im No-Delay-Modus wird eine Ausnahme ausgelöst, wenn keine Eingabe vorhanden ist.

Hinzugefügt in Version 3.3.

window.getkey([y, x])

Liest ein Zeichen und gibt einen String anstelle einer Ganzzahl zurück, wie es getch() tut. Funktionstasten, Ziffernblocktasten und andere spezielle Tasten geben einen Multibyte-String mit dem Tastennamen zurück. Im No-Delay-Modus wird eine Ausnahme ausgelöst, wenn keine Eingabe vorhanden ist.

window.getmaxyx()

Gibt ein Tupel (y, x) der Höhe und Breite des Fensters zurück.

window.getparyx()

Gibt die Anfangskoordinaten dieses Fensters relativ zu seinem Elternfenster als Tupel (y, x) zurück. Gibt (-1, -1) zurück, wenn dieses Fenster kein Elternteil hat.

window.getstr()
window.getstr(n)
window.getstr(y, x)
window.getstr(y, x, n)

Liest ein Byte-Objekt vom Benutzer mit rudimentären Zeilenbearbeitungsfunktionen. Der maximale Wert für n ist 2047.

Geändert in Version 3.14: Der Höchstwert für n wurde von 1023 auf 2047 erhöht.

window.getyx()

Gibt ein Tupel (y, x) der aktuellen Cursorposition relativ zur oberen linken Ecke des Fensters zurück.

window.hline(ch, n)
window.hline(y, x, ch, n)

Zeigt eine horizontale Linie ab Position (y, x) mit der Länge n, bestehend aus dem Zeichen ch.

window.idcok(flag)

Wenn flag False ist, berücksichtigt curses nicht mehr die Hardware-Einfüge-/Löschfunktion des Terminals; wenn flag True ist, ist die Verwendung von Zeicheneinfügung und -löschung aktiviert. Wenn curses initialisiert wird, ist die Verwendung von Zeicheneinfügung/-löschung standardmäßig aktiviert.

window.idlok(flag)

Wenn flag True ist, versucht curses, Hardware-Zeilenbearbeitungsfunktionen zu verwenden. Andernfalls sind Zeileneinfügung/-löschung deaktiviert.

window.immedok(flag)

Wenn flag True ist, bewirkt jede Änderung am Fensterbild automatisch, dass das Fenster aktualisiert wird. Sie müssen refresh() nicht mehr selbst aufrufen. Dies kann jedoch die Leistung erheblich beeinträchtigen, da wrefresh wiederholt aufgerufen wird. Diese Option ist standardmäßig deaktiviert.

window.inch([y, x])

Gibt das Zeichen an der angegebenen Position im Fenster zurück. Die unteren 8 Bits sind das Zeichen selbst, die oberen Bits sind die Attribute.

window.insch(ch[, attr])
window.insch(y, x, ch[, attr])

Zeichnet das Zeichen ch an (y, x) mit den Attributen attr und verschiebt die Zeile ab Position x um ein Zeichen nach rechts.

window.insdelln(nlines)

Fügt nlines Zeilen in das angegebene Fenster oberhalb der aktuellen Zeile ein. Die nlines unteren Zeilen gehen verloren. Für negative nlines werden nlines Zeilen gelöscht, beginnend mit der unter dem Cursor, und die verbleibenden Zeilen werden nach oben verschoben. Die unteren nlines Zeilen werden gelöscht. Die aktuelle Cursorposition bleibt unverändert.

window.insertln()

Fügt eine leere Zeile unter dem Cursor ein. Alle folgenden Zeilen werden eine Zeile nach unten verschoben.

window.insnstr(str, n[, attr])
window.insnstr(y, x, str, n[, attr])

Fügt eine Zeichenkette (so viele Zeichen, wie auf die Zeile passen) vor dem Zeichen unter dem Cursor ein, bis zu n Zeichen. Wenn n null oder negativ ist, wird die gesamte Zeichenkette eingefügt. Alle Zeichen rechts vom Cursor werden nach rechts verschoben, wobei die rechtesten Zeichen der Zeile verloren gehen. Die Cursorposition ändert sich nicht (nachdem sie, falls angegeben, nach y, x verschoben wurde).

window.insstr(str[, attr])
window.insstr(y, x, str[, attr])

Fügt eine Zeichenkette (so viele Zeichen, wie auf die Zeile passen) vor dem Zeichen unter dem Cursor ein. Alle Zeichen rechts vom Cursor werden nach rechts verschoben, wobei die rechtesten Zeichen der Zeile verloren gehen. Die Cursorposition ändert sich nicht (nachdem sie, falls angegeben, nach y, x verschoben wurde).

window.instr([n])
window.instr(y, x[, n])

Gibt ein Byte-Objekt von Zeichen zurück, das aus dem Fenster ab der aktuellen Cursorposition oder ab y, x, falls angegeben, extrahiert wird. Attribute werden von den Zeichen gestrippt. Wenn n angegeben ist, gibt instr() einen String von höchstens n Zeichen Länge zurück (ausschließlich des abschließenden NUL). Der Höchstwert für n ist 2047.

Geändert in Version 3.14: Der Höchstwert für n wurde von 1023 auf 2047 erhöht.

window.is_linetouched(line)

Gibt True zurück, wenn die angegebene Zeile seit dem letzten Aufruf von refresh() geändert wurde; andernfalls wird False zurückgegeben. Löst eine curses.error Ausnahme aus, wenn line für das gegebene Fenster ungültig ist.

window.is_wintouched()

Gibt True zurück, wenn das angegebene Fenster seit dem letzten Aufruf von refresh() geändert wurde; andernfalls wird False zurückgegeben.

window.keypad(flag)

Wenn flag True ist, werden Escape-Sequenzen, die von einigen Tasten (Ziffernblock, Funktionstasten) erzeugt werden, von curses interpretiert. Wenn flag False ist, bleiben Escape-Sequenzen unverändert im Eingabestrom.

window.leaveok(flag)

Wenn flag True ist, bleibt der Cursor nach der Aktualisierung an seiner Position und nicht an der „Cursor-Position“. Dies reduziert Cursor-Bewegungen, wo immer möglich. Wenn möglich, wird der Cursor unsichtbar gemacht.

Wenn flag False ist, befindet sich der Cursor nach einer Aktualisierung immer an der „Cursor-Position“.

fenster.move(new_y, new_x)

Verschiebt den Cursor zu (new_y, new_x).

fenster.mvderwin(y, x)

Verschiebt das Fenster innerhalb seines Elternfensters. Die bildschirmrelativen Parameter des Fensters ändern sich nicht. Diese Routine wird verwendet, um verschiedene Teile des Elternfensters an der gleichen physischen Position auf dem Bildschirm anzuzeigen.

fenster.mvwin(new_y, new_x)

Verschiebt das Fenster, sodass seine obere linke Ecke sich bei (new_y, new_x) befindet.

fenster.nodelay(flag)

Wenn flag True ist, wird getch() nicht-blockierend arbeiten.

fenster.notimeout(flag)

Wenn flag True ist, werden Escape-Sequenzen nicht mit einem Timeout versehen.

Wenn flag False ist, wird nach einigen Millisekunden eine Escape-Sequenz nicht interpretiert und unverändert in den Eingabestrom zurückgegeben.

fenster.noutrefresh()

Markiert für Aktualisierung, wartet aber. Diese Funktion aktualisiert die Datenstruktur, die den gewünschten Zustand des Fensters repräsentiert, zwingt aber keine Aktualisierung des physischen Bildschirms. Um dies zu erreichen, rufen Sie doupdate() auf.

fenster.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

Überlagert das Fenster auf destwin. Die Fenster müssen nicht gleich groß sein, es wird nur der überlappende Bereich kopiert. Diese Kopie ist nicht-destruktiv, was bedeutet, dass das aktuelle Hintergrundzeichen den alten Inhalt von destwin nicht überschreibt.

Um eine detaillierte Kontrolle über den kopierten Bereich zu erhalten, kann die zweite Form von overlay() verwendet werden. sminrow und smincol sind die Koordinaten der oberen linken Ecke des Quellfensters, und die anderen Variablen markieren ein Rechteck im Zielfenster.

fenster.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

Überschreibt das Fenster auf destwin. Die Fenster müssen nicht gleich groß sein, in diesem Fall wird nur der überlappende Bereich kopiert. Diese Kopie ist destruktiv, was bedeutet, dass das aktuelle Hintergrundzeichen den alten Inhalt von destwin überschreibt.

Um eine detaillierte Kontrolle über den kopierten Bereich zu erhalten, kann die zweite Form von overwrite() verwendet werden. sminrow und smincol sind die Koordinaten der oberen linken Ecke des Quellfensters, die anderen Variablen markieren ein Rechteck im Zielfenster.

fenster.putwin(file)

Schreibt alle mit dem Fenster verbundenen Daten in das bereitgestellte Dateiobjekt. Diese Informationen können später mit der Funktion getwin() abgerufen werden.

fenster.redrawln(beg, num)

Zeigt an, dass die num Bildschirmzeilen, beginnend mit Zeile beg, beschädigt sind und bei der nächsten refresh()-Aufrufung vollständig neu gezeichnet werden sollten.

fenster.redrawwin()

Berührt das gesamte Fenster, was bewirkt, dass es bei der nächsten refresh()-Aufrufung vollständig neu gezeichnet wird.

fenster.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])

Aktualisiert den Bildschirm sofort (synchronisiert den tatsächlichen Bildschirm mit vorherigen Zeichen-/Löschmethoden).

Die 6 optionalen Argumente können nur angegeben werden, wenn das Fenster ein Pad ist, das mit newpad() erstellt wurde. Die zusätzlichen Parameter werden benötigt, um anzugeben, welcher Teil des Pads und des Bildschirms betroffen ist. pminrow und pmincol geben die obere linke Ecke des auf dem Pad anzuzeigenden Rechtecks an. sminrow, smincol, smaxrow und smaxcol geben die Kanten des auf dem Bildschirm anzuzeigenden Rechtecks an. Die rechte untere Ecke des auf dem Pad anzuzeigenden Rechtecks wird aus den Bildschirmkoordinaten berechnet, da die Rechtecke gleich groß sein müssen. Beide Rechtecke müssen vollständig in ihren jeweiligen Strukturen enthalten sein. Negative Werte für pminrow, pmincol, sminrow oder smincol werden als Null behandelt.

fenster.resize(nlines, ncols)

Weist den Speicher für ein curses-Fenster neu zu, um seine Abmessungen auf die angegebenen Werte anzupassen. Wenn eine der Dimensionen größer als die aktuellen Werte ist, werden die Daten des Fensters mit Leerzeichen gefüllt, die die aktuelle Hintergrunddarstellung (wie durch bkgdset() gesetzt) gemischt enthalten.

fenster.scroll([lines=1])

Scrollt den Bildschirm oder den Scrollbereich um lines Zeilen nach oben.

fenster.scrollok(flag)

Steuert, was passiert, wenn der Cursor eines Fensters den Rand des Fensters oder des Scrollbereichs verlässt, entweder als Ergebnis einer Zeilenumbruchaktion auf der untersten Zeile oder durch Eingabe des letzten Zeichens der letzten Zeile. Wenn flag False ist, bleibt der Cursor in der untersten Zeile. Wenn flag True ist, wird das Fenster um eine Zeile nach oben gescrollt. Beachten Sie, dass für den physischen Scroll-Effekt auf dem Terminal auch idlok() aufgerufen werden muss.

fenster.setscrreg(top, bottom)

Legt den Scrollbereich von Zeile top bis Zeile bottom fest. Alle Scrollaktionen finden in diesem Bereich statt.

fenster.standend()

Schaltet das Standout-Attribut aus. Auf einigen Terminals hat dies den Nebeneffekt, alle Attribute auszuschalten.

fenster.standout()

Schaltet das Attribut A_STANDOUT ein.

fenster.subpad(begin_y, begin_x)
fenster.subpad(nlines, ncols, begin_y, begin_x)

Gibt ein Unterfenster zurück, dessen obere linke Ecke sich bei (begin_y, begin_x) befindet und dessen Breite/Höhe ncols/nlines beträgt.

fenster.subwin(begin_y, begin_x)
fenster.subwin(nlines, ncols, begin_y, begin_x)

Gibt ein Unterfenster zurück, dessen obere linke Ecke sich bei (begin_y, begin_x) befindet und dessen Breite/Höhe ncols/nlines beträgt.

Standardmäßig erstreckt sich das Unterfenster von der angegebenen Position bis zur unteren rechten Ecke des Fensters.

fenster.syncdown()

Berührt jede Position im Fenster, die in einem seiner Elternfenster berührt wurde. Diese Routine wird von refresh() aufgerufen, daher sollte sie fast nie manuell aufgerufen werden müssen.

fenster.syncok(flag)

Wenn flag True ist, wird syncup() automatisch aufgerufen, wenn es eine Änderung im Fenster gibt.

fenster.syncup()

Berührt alle Positionen in den Elternfenstern des Fensters, die im Fenster geändert wurden.

fenster.timeout(delay)

Legt das blockierende oder nicht-blockierende Lese-Verhalten für das Fenster fest. Wenn delay negativ ist, wird eine blockierende Lesung verwendet (die unbegrenzt auf Eingaben wartet). Wenn delay null ist, wird eine nicht-blockierende Lesung verwendet und getch() gibt -1 zurück, wenn keine Eingabe wartet. Wenn delay positiv ist, blockiert getch() für delay Millisekunden und gibt -1 zurück, wenn nach Ablauf dieser Zeit immer noch keine Eingabe vorhanden ist.

fenster.touchline(start, count[, changed])

Gibt vor, dass count Zeilen geändert wurden, beginnend mit Zeile start. Wenn changed angegeben ist, gibt es an, ob die betroffenen Zeilen als geändert (changed=True) oder unverändert (changed=False) markiert sind.

fenster.touchwin()

Gibt vor, dass das gesamte Fenster geändert wurde, für Optimierungszwecke bei der Anzeige.

fenster.untouchwin()

Markiert alle Zeilen im Fenster als unverändert seit dem letzten Aufruf von refresh().

fenster.vline(ch, n[, attr])
fenster.vline(y, x, ch, n[, attr])

Zeigt eine vertikale Linie beginnend bei (y, x) mit der Länge n an, bestehend aus dem Zeichen ch mit den Attributen attr.

Konstanten

Das Modul curses definiert die folgenden Datenmember

curses.ERR

Einige curses-Routinen, die einen Integer zurückgeben, wie z. B. getch(), geben im Fehlerfall ERR zurück.

curses.OK

Einige curses-Routinen, die einen Integer zurückgeben, wie z. B. napms(), geben bei Erfolg OK zurück.

curses.version
curses.__version__

Ein Bytes-Objekt, das die aktuelle Version des Moduls darstellt.

curses.ncurses_version

Ein benannter Tupel, der die drei Komponenten der ncurses-Bibliotheksversion enthält: major, minor und patch. Alle Werte sind Integer. Die Komponenten können auch namentlich abgerufen werden, sodass curses.ncurses_version[0] äquivalent zu curses.ncurses_version.major und so weiter ist.

Verfügbarkeit: wenn die ncurses-Bibliothek verwendet wird.

Hinzugefügt in Version 3.8.

curses.COLORS

Die maximale Anzahl von Farben, die das Terminal unterstützen kann. Sie wird erst nach dem Aufruf von start_color() definiert.

curses.COLOR_PAIRS

Die maximale Anzahl von Farbpaaren, die das Terminal unterstützen kann. Sie wird erst nach dem Aufruf von start_color() definiert.

curses.COLS

Die Breite des Bildschirms, d. h. die Anzahl der Spalten. Sie wird erst nach dem Aufruf von initscr() definiert. Aktualisiert durch update_lines_cols(), resizeterm() und resize_term().

curses.LINES

Die Höhe des Bildschirms, d. h. die Anzahl der Zeilen. Sie wird erst nach dem Aufruf von initscr() definiert. Aktualisiert durch update_lines_cols(), resizeterm() und resize_term().

Einige Konstanten sind verfügbar, um Zeichenzellattribute zu extrahieren. Die genauen verfügbaren Konstanten sind systemspezifisch.

Attribut

Bedeutung

curses.A_ALTCHARSET

Alternativer Zeichensatzmodus

Blinkmodus

curses.A_BOLD

Fettdruckmodus

curses.A_DIM

Gedimmter Modus

curses.A_INVIS

Unsichtbarer oder leerer Modus

curses.A_ITALIC

Italic-Modus

curses.A_NORMAL

Normales Attribut

curses.A_PROTECT

Geschützter Modus

curses.A_REVERSE

Kehrt Vordergrund- und Hintergrundfarben um

curses.A_STANDOUT

Herausstellungsmodus

curses.A_UNDERLINE

Unterstrichener Modus

curses.A_HORIZONTAL

Horizontale Hervorhebung

curses.A_LEFT

Linke Hervorhebung

curses.A_LOW

Niedrige Hervorhebung

curses.A_RIGHT

Rechte Hervorhebung

curses.A_TOP

Obere Hervorhebung

curses.A_VERTICAL

Vertikale Hervorhebung

Hinzugefügt in Version 3.7: A_ITALIC wurde hinzugefügt.

Mehrere Konstanten stehen zur Verfügung, um entsprechende Attribute zu extrahieren, die von einigen Methoden zurückgegeben werden.

Bitmaske

Bedeutung

curses.A_ATTRIBUTES

Bitmaske zum Extrahieren von Attributen

curses.A_CHARTEXT

Bitmaske zum Extrahieren eines Zeichens

curses.A_COLOR

Bitmaske zum Extrahieren von Farbparkett-Feldinformationen

Tasten werden durch ganzzahlige Konstanten mit Namen bezeichnet, die mit KEY_ beginnen. Die genauen verfügbaren Tastenbezeichnungen sind systemspezifisch.

Tastkonstante

Taste

curses.KEY_MIN

Minimaler Tastenwert

curses.KEY_BREAK

Break-Taste (unzuverlässig)

curses.KEY_DOWN

Pfeil nach unten

curses.KEY_UP

Pfeil nach oben

curses.KEY_LEFT

Pfeil nach links

curses.KEY_RIGHT

Pfeil nach rechts

curses.KEY_HOME

Home-Taste (Pfeil nach oben + links)

curses.KEY_BACKSPACE

Rücktaste (unzuverlässig)

curses.KEY_F0

Funktionstasten. Bis zu 64 Funktionstasten werden unterstützt.

curses.KEY_Fn

Wert der Funktionstaste n

curses.KEY_DL

Zeile löschen

curses.KEY_IL

Zeile einfügen

curses.KEY_DC

Zeichen löschen

curses.KEY_IC

Zeichen einfügen oder Einfügemodus starten

curses.KEY_EIC

Einfügemodus für Zeichen beenden

curses.KEY_CLEAR

Bildschirm löschen

curses.KEY_EOS

Bis zum Ende des Bildschirms löschen

curses.KEY_EOL

Bis zum Ende der Zeile löschen

curses.KEY_SF

1 Zeile vorwärts scrollen

curses.KEY_SR

1 Zeile rückwärts (reverse) scrollen

curses.KEY_NPAGE

Nächste Seite

curses.KEY_PPAGE

Vorherige Seite

curses.KEY_STAB

Tabulator setzen

curses.KEY_CTAB

Tabulator löschen

curses.KEY_CATAB

Alle Tabulatoren löschen

curses.KEY_ENTER

Enter oder Senden (unzuverlässig)

curses.KEY_SRESET

Soft (partielles) Reset (unzuverlässig)

curses.KEY_RESET

Reset oder Hard Reset (unzuverlässig)

curses.KEY_PRINT

Drucken

curses.KEY_LL

Nach unten gehen oder unten (unten links)

curses.KEY_A1

Oben links auf der Tastatur

curses.KEY_A3

Oben rechts auf der Tastatur

curses.KEY_B2

Mitte der Tastatur

curses.KEY_C1

Unten links auf der Tastatur

curses.KEY_C3

Unten rechts auf der Tastatur

curses.KEY_BTAB

Zurück-Tabulator

curses.KEY_BEG

Anfang (beginning)

curses.KEY_CANCEL

Abbrechen

curses.KEY_CLOSE

Schließen

curses.KEY_COMMAND

Befehl (command)

curses.KEY_COPY

Kopieren

curses.KEY_CREATE

Erstellen

curses.KEY_END

Ende

curses.KEY_EXIT

Beenden

curses.KEY_FIND

Suchen

curses.KEY_HELP

Hilfe

curses.KEY_MARK

Markieren

curses.KEY_MESSAGE

Nachricht

curses.KEY_MOVE

Bewegen

curses.KEY_NEXT

Nächstes

curses.KEY_OPEN

Öffnen

curses.KEY_OPTIONS

Optionen

curses.KEY_PREVIOUS

Vorheriges (previous)

curses.KEY_REDO

Wiederholen

curses.KEY_REFERENCE

Referenz (ref)

curses.KEY_REFRESH

Aktualisieren

curses.KEY_REPLACE

Ersetzen

curses.KEY_RESTART

Neustart

curses.KEY_RESUME

Fortsetzen

curses.KEY_SAVE

Speichern

curses.KEY_SBEG

Umschalt-Anfang (beginning)

curses.KEY_SCANCEL

Umschalt-Abbrechen

curses.KEY_SCOMMAND

Umschalt-Befehl

curses.KEY_SCOPY

Umschalt-Kopieren

curses.KEY_SCREATE

Umschalt-Erstellen

curses.KEY_SDC

Umschalt-Zeichen löschen

curses.KEY_SDL

Umschalt-Zeile löschen

curses.KEY_SELECT

Auswählen

curses.KEY_SEND

Umschalt-Ende

curses.KEY_SEOL

Umschalt-Zeile löschen

curses.KEY_SEXIT

Umschalt-Beenden

curses.KEY_SFIND

Umschalt-Suchen

curses.KEY_SHELP

Umschalt-Hilfe

curses.KEY_SHOME

Umschalt-Home

curses.KEY_SIC

Umschalt-Eingabe

curses.KEY_SLEFT

Umschalt-Pfeil nach links

curses.KEY_SMESSAGE

Umschalt-Nachricht

curses.KEY_SMOVE

Umschalt-Bewegen

curses.KEY_SNEXT

Umschalt-Nächstes

curses.KEY_SOPTIONS

Umschalt-Optionen

curses.KEY_SPREVIOUS

Umschalt-Vorheriges

curses.KEY_SPRINT

Umschalt-Drucken

curses.KEY_SREDO

Umschalt-Wiederholen

curses.KEY_SREPLACE

Umschalt-Ersetzen

curses.KEY_SRIGHT

Umschalt-Pfeil nach rechts

curses.KEY_SRSUME

Umschalt-Fortsetzen

curses.KEY_SSAVE

Umschalt-Speichern

curses.KEY_SSUSPEND

Umschalt-Anhalten

curses.KEY_SUNDO

Umschalt-Rückgängig machen

curses.KEY_SUSPEND

Anhalten

curses.KEY_UNDO

Rückgängig machen

curses.KEY_MOUSE

Mausereignis ist aufgetreten

curses.KEY_RESIZE

Terminalgrößenänderungsereignis

curses.KEY_MAX

Maximaler Schlüsselwert

Auf VT100s und ihren Software-Emulationen, wie z.B. X-Terminal-Emulatoren, sind normalerweise mindestens vier Funktionstasten (KEY_F1, KEY_F2, KEY_F3, KEY_F4) verfügbar, und die Pfeiltasten sind auf KEY_UP, KEY_DOWN, KEY_LEFT und KEY_RIGHT in der üblichen Weise abgebildet. Wenn Ihre Maschine eine PC-Tastatur hat, können Sie sicher Pfeiltasten und zwölf Funktionstasten erwarten (ältere PC-Tastaturen haben möglicherweise nur zehn Funktionstasten); außerdem sind die folgenden Tastaturbelegungen Standard

Tasten

Konstante

Einfügen

KEY_IC

Löschen

KEY_DC

Home

KEY_HOME

Ende

KEY_END

Seite hoch

KEY_PPAGE

Seite runter

KEY_NPAGE

Die folgende Tabelle listet Zeichen aus dem alternativen Zeichensatz auf. Diese sind von VT100-Terminals geerbt und im Allgemeinen auf Software-Emulationen wie X-Terminals verfügbar. Wenn keine Grafik verfügbar ist, greift Curses auf eine einfache druckbare ASCII-Annäherung zurück.

Hinweis

Diese sind nur verfügbar, nachdem initscr() aufgerufen wurde.

ACS-Code

Bedeutung

curses.ACS_BBSS

Alternativname für die obere rechte Ecke

curses.ACS_BLOCK

solider Block

curses.ACS_BOARD

Quadrate-Brett

curses.ACS_BSBS

Alternativname für horizontale Linie

curses.ACS_BSSB

Alternativname für die obere linke Ecke

curses.ACS_BSSS

Alternativname für die obere T-Verbindung

curses.ACS_BTEE

untere T-Verbindung

curses.ACS_BULLET

Aufzählungszeichen

curses.ACS_CKBOARD

Schachbrett (stippled)

curses.ACS_DARROW

Pfeil nach unten

curses.ACS_DEGREE

Grad-Symbol

curses.ACS_DIAMOND

Diamant

curses.ACS_GEQUAL

größer als oder gleich

curses.ACS_HLINE

horizontale Linie

curses.ACS_LANTERN

Laternen-Symbol

curses.ACS_LARROW

Pfeil nach links

curses.ACS_LEQUAL

kleiner als oder gleich

curses.ACS_LLCORNER

untere linke Ecke

curses.ACS_LRCORNER

untere rechte Ecke

curses.ACS_LTEE

linke T-Verbindung

curses.ACS_NEQUAL

ungleichheitszeichen

curses.ACS_PI

Buchstabe Pi

curses.ACS_PLMINUS

plus-minus-Zeichen

curses.ACS_PLUS

großes Pluszeichen

curses.ACS_RARROW

Pfeil nach rechts

curses.ACS_RTEE

rechte T-Verbindung

curses.ACS_S1

Scan-Linie 1

curses.ACS_S3

Scan-Linie 3

curses.ACS_S7

Scan-Linie 7

curses.ACS_S9

Scan-Linie 9

curses.ACS_SBBS

Alternativname für die untere rechte Ecke

curses.ACS_SBSB

Alternativname für vertikale Linie

curses.ACS_SBSS

Alternativname für die rechte T-Verbindung

curses.ACS_SSBB

Alternativname für die untere linke Ecke

curses.ACS_SSBS

Alternativname für die untere T-Verbindung

curses.ACS_SSSB

Alternativname für die linke T-Verbindung

curses.ACS_SSSS

Alternativname für Kreuzung oder großes Pluszeichen

curses.ACS_STERLING

Pfund Sterling

curses.ACS_TTEE

obere T-Verbindung

curses.ACS_UARROW

Pfeil nach oben

curses.ACS_ULCORNER

obere linke Ecke

curses.ACS_URCORNER

obere rechte Ecke

curses.ACS_VLINE

vertikale Linie

Die folgende Tabelle listet Maus-Button-Konstanten auf, die von getmouse() verwendet werden.

Maus-Button-Konstante

Bedeutung

curses.BUTTONn_PRESSED

Maus-Button n gedrückt

curses.BUTTONn_RELEASED

Maus-Button n losgelassen

curses.BUTTONn_CLICKED

Maus-Button n angeklickt

curses.BUTTONn_DOUBLE_CLICKED

Maus-Button n doppelt angeklickt

curses.BUTTONn_TRIPLE_CLICKED

Maus-Button n dreifach angeklickt

curses.BUTTON_SHIFT

Shift war während der Zustandsänderung des Buttons gedrückt

curses.BUTTON_CTRL

Steuerung war während der Zustandsänderung des Buttons gedrückt

curses.BUTTON_ALT

Steuerung war während der Zustandsänderung des Buttons gedrückt

Geändert in Version 3.10: Die Konstanten BUTTON5_* werden nun angezeigt, wenn sie von der zugrunde liegenden curses-Bibliothek bereitgestellt werden.

Die folgende Tabelle listet die vordefinierten Farben auf

Konstante

Farbe

curses.COLOR_BLACK

Schwarz

curses.COLOR_BLUE

Blau

curses.COLOR_CYAN

Cyan (hellgrünblau)

curses.COLOR_GREEN

Grün

curses.COLOR_MAGENTA

Magenta (rötlich-violett)

curses.COLOR_RED

Rot

curses.COLOR_WHITE

Weiß

curses.COLOR_YELLOW

Gelb

curses.textpad — Text-Eingabe-Widget für curses-Programme

Das Modul curses.textpad stellt eine Klasse Textbox bereit, die elementare Textbearbeitung in einem curses-Fenster handhabt und eine Reihe von Tastenkombinationen unterstützt, die denen von Emacs ähneln (daher auch Netscape Navigator, BBedit 6.x, FrameMaker und viele andere Programme). Das Modul bietet auch eine Funktion zum Zeichnen von Rechtecken, die sich zum Einrahmen von Textfeldern oder für andere Zwecke eignet.

Das Modul curses.textpad definiert die folgende Funktion

curses.textpad.rectangle(win, uly, ulx, lry, lrx)

Zeichnet ein Rechteck. Das erste Argument muss ein Fensterobjekt sein; die übrigen Argumente sind Koordinaten relativ zu diesem Fenster. Das zweite und dritte Argument sind die y- und x-Koordinaten der oberen linken Ecke des zu zeichnenden Rechtecks; das vierte und fünfte Argument sind die y- und x-Koordinaten der unteren rechten Ecke. Das Rechteck wird mit VT100/IBM PC-Zeichen auf Terminals gezeichnet, die dies ermöglichen (einschließlich xterm und den meisten anderen Software-Terminal-Emulatoren). Andernfalls wird es mit ASCII-Bindestrichen, vertikalen Strichen und Pluszeichen gezeichnet.

Textbox-Objekte

Sie können ein Textbox-Objekt wie folgt instanziieren

class curses.textpad.Textbox(win)

Gibt ein Textbox-Widget-Objekt zurück. Das Argument win sollte ein Curses Fenster-Objekt sein, in dem die Textbox enthalten sein soll. Der Bearbeitungs-Cursor der Textbox befindet sich anfänglich in der oberen linken Ecke des enthaltenden Fensters mit den Koordinaten (0, 0). Das Attribut stripspaces der Instanz ist anfänglich aktiviert.

Textbox-Objekte haben die folgenden Methoden

edit([validator])

Dies ist der Einstiegspunkt, den Sie normalerweise verwenden werden. Er akzeptiert Bearbeitungs-Tastendrücke, bis einer der Beendigungs-Tastendrücke eingegeben wird. Wenn validator angegeben ist, muss es eine Funktion sein. Sie wird für jeden eingegebenen Tastendruck mit dem Tastendruck als Parameter aufgerufen; die Befehlsverteilung erfolgt anhand des Ergebnisses. Diese Methode gibt den Fensterinhalt als Zeichenkette zurück; ob Leerzeichen im Fenster enthalten sind, wird vom Attribut stripspaces beeinflusst.

do_command(ch)

Verarbeitet einen einzelnen Befehls-Tastendruck. Hier sind die unterstützten speziellen Tastendrücke

Tastendruck

Aktion

Control-A

Gehe zum linken Rand des Fensters.

Control-B

Cursor nach links, wenn nötig mit Zeilenumbruch zur vorherigen Zeile.

Control-D

Zeichen unter dem Cursor löschen.

Control-E

Gehe zum rechten Rand (stripspaces aus) oder zum Ende der Zeile (stripspaces an).

Control-F

Cursor nach rechts, wenn nötig mit Zeilenumbruch zur nächsten Zeile.

Control-G

Beenden und den Fensterinhalt zurückgeben.

Control-H

Zeichen rückwärts löschen.

Control-J

Beenden, wenn das Fenster 1 Zeile hat, ansonsten neue Zeile einfügen.

Control-K

Wenn die Zeile leer ist, diese löschen, ansonsten bis zum Ende der Zeile löschen.

Control-L

Bildschirm aktualisieren.

Control-N

Cursor nach unten; eine Zeile nach unten bewegen.

Control-O

Eine leere Zeile an der Cursorposition einfügen.

Control-P

Cursor nach oben; eine Zeile nach oben bewegen.

Bewegungsoperationen tun nichts, wenn der Cursor an einem Rand ist, an dem die Bewegung nicht möglich ist. Die folgenden Synonyme werden unterstützt, wo immer möglich

Konstante

Tastendruck

KEY_LEFT

Control-B

KEY_RIGHT

Control-F

KEY_UP

Control-P

KEY_DOWN

Control-N

KEY_BACKSPACE

Control-h

Alle anderen Tastendrücke werden als Befehl behandelt, das gegebene Zeichen einzufügen und nach rechts zu gehen (mit Zeilenumbruch).

gather()

Gibt den Fensterinhalt als Zeichenkette zurück; ob Leerzeichen im Fenster enthalten sind, wird vom Attribut stripspaces beeinflusst.

stripspaces

Dieses Attribut ist ein Flag, das die Interpretation von Leerzeichen im Fenster steuert. Wenn es aktiviert ist, werden nachfolgende Leerzeichen auf jeder Zeile ignoriert; jede Cursorbewegung, die den Cursor auf ein nachfolgendes Leerzeichen bringt, geht stattdessen zum Ende dieser Zeile, und nachfolgende Leerzeichen werden entfernt, wenn der Fensterinhalt gesammelt wird.