Wie kann ich die aktuelle Position des Bash-Cursors bei Verwendung von python readline ermitteln (und setzen)?

8

Ich habe ein Python-Skript, das die stdin, stdout und stderr jeder Anwendung verwaltet und es ermöglicht, dass readline korrekt eingefügt wird. Denken Sie an jede Anwendung, die viele Konsolenausgaben hat, aber auch Befehle von stdin akzeptiert.

In jedem Fall verwendet mein Skript diese beiden Funktionen:

%Vor%

Wenn ich stdout behandle, rufe ich print_line () auf. Dies löscht, was auch immer der Benutzer eingibt, druckt die Zeile und stellt dann den Eingabetext des Benutzers wieder her. Dies alles geschieht, ohne dass der Benutzer etwas bemerkt.

Das Problem tritt auf, wenn sich der Cursor nicht am Ende der Eingaben befindet, die der Benutzer eingibt. Wenn sich der Cursor in der Mitte des Tests befindet und eine Zeile gedruckt wird, wird der Cursor automatisch am Ende der Eingabe platziert. Um das zu lösen, möchte ich in print_line so etwas machen:

%Vor%

Bearbeiten: Um zu visualisieren, was ich geschrieben habe:

Das Terminal sieht so aus:

%Vor%

Der Ausgabetext scrollt also ständig, wenn neue Protokolle durchkommen. Zur gleichen Zeit bearbeitet der Benutzer gerade einen neuen Befehl und schreibt ihn, der nach dem Treffer eingefügt wird. Es sieht also so aus wie die Python-Konsole, aber die Ausgabe wird immer angehängt.

    
Jim Cortez 26.10.2011, 19:31
quelle

1 Antwort

4

Könnte ich vorschlagen, Python verflucht ?

Hier ist das grundlegende How-To

  

Das Modul curses bietet eine Schnittstelle zur curses-Bibliothek, dem De-facto-Standard für die portable Handhabung fortgeschrittener Terminals.

     

Während Flures in der Unix-Umgebung am häufigsten verwendet wird, sind Versionen für DOS, OS / 2 und möglicherweise auch andere Systeme verfügbar. Dieses Erweiterungsmodul ist so konzipiert, dass es mit der API von ncurses, einer auf Linux gehosteten Open-Source-Curses-Bibliothek und den BSD-Varianten von Unix, übereinstimmt.

Alternativ

Ich habe den Terminal Controller hier gefunden: Verwenden von terminfo für portable Farbausgabe & amp; Cursorsteuerung . Es scheint tragbarer zu sein, als der Site-Name vermuten lässt (MacOS in den Kommentaren erwähnt - wenn auch mit Änderungen).

Hier ist ein Anwendungsbeispiel, das einen Fortschrittsbalken anzeigt:

%Vor%     
sehe 26.10.2011 19:48
quelle

Tags und Links