Seite 1 von 1

Zeichen links vom Cursor löschen

Verfasst: Mittwoch 30. September 2009, 19:00
von snafu
Hallo,

ich suche eine Escape-Sequenz (oder andere Möglichkeit), um das Zeichen links der Cursorposition löschen zu können und mit dem Cursor entsprechend eins nach links zu springen. Also so wie es bei der Löschtaste wäre. Ich weiß, dass es `\b` gibt, um eins nach links zu springen. Aber ich weiß nicht, wie man zusätzlich das Zeichen löscht. :(

Hintergrund ist eine Art Schreibmaschinen-Funktion:

Code: Alles auswählen

from sys import stdout
from time import sleep

def write(s, interval=0.25, stream=stdout):
    for char in s:
        stream.write(char)
        stream.flush()
        sleep(interval)
    stream.write('\n')

Code: Alles auswählen

>>> import typewriter
>>> text = "Hallo, Python-Forum :-)"
>>> typewriter.write(text)
Hallo, Python-Forum :-)
Ich möchte die Zeichen in dieser Art auch wieder löschen können.

Und ich möchte das mögliches ohne Curses lösen.

Verfasst: Mittwoch 30. September 2009, 19:21
von fred.reichbier
Hallo,

wenns garnicht anders geht (was ich allerdings bezweifle :)) könntest du ja auch sowas wie

Code: Alles auswählen

stream.write('\b \b')
benutzen - eins nach links, ein Leerzeichen und wieder eins nach links. ;)

Gruß,

Fred

Verfasst: Mittwoch 30. September 2009, 19:40
von snafu
Stimmt. So lange es keine bessere Lösugn gibt, lasse ich das auch in der Form eingebaut.

Code: Alles auswählen

from sys import stdout
from time import sleep

def write(s, interval=0.25, stream=stdout, delete_after=False):
    def write_char(char, interval):
        stream.write(char)
        stream.flush()
        sleep(interval)

    for char in s:
        write_char(char, interval)

    if delete_after:
        for char in s:
            write_char('\b \b', interval/2)
    else:
        stream.write('\n')

Verfasst: Mittwoch 30. September 2009, 20:59
von snafu