curses.textpad und Umlaute

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
buecherratten
User
Beiträge: 1
Registriert: Freitag 9. Juli 2021, 11:56

Hallo,
ich versuche mir in der Linux-CLI eine GUI mit pythons curses (ncurses) zu bauen. Das funktioniert auch relativ gut. Aber wenn ich versuche textpad zu benutzen, kann ich keine Umlaute eingeben und bekomme auch keine Umlaute zurück. In der Überschrift funktionieren die Umlaute, nur nicht beim eingeben und auslesen der Eingabe.
Ich hab keine Idee mehr wie ich Umlaute und nicht ASCII-Zeichen in die Textpad-Eingabe bekomme. Hat jemand von euch eine Idee dazu? Vielleicht mache ich ja irgendwas falsch.

Hier ist mein Beispielcode, mit dem ich herum experimentiere:

Code: Alles auswählen

import curses
import curses.textpad
import locale #aus der Doku

locale.setlocale(locale.LC_ALL, '') #aus der Doku

def main(stdscr):
    stdscr.clear()
    stdscr.refresh()

    titel = curses.newwin(3, 60, 5, 10)
    titel.box()
    titel.addstr(1, 3, "Eingabe mit STRG+G äbbrechen") #test um zu prüfen ob Umlaute in addstr funktionieren
    win = curses.newwin(5, 60, 15, 10)

    tb = curses.textpad.Textbox(win, insert_mode=True)

    titel.refresh()
    text = tb.edit() #text hat das was eingetragen wurde
    new=tb.gather()  #new hat den Inhalt der Textbox
    win.addstr(0, 0, text.encode('utf-8'))

    result = curses.newwin(5, 60, 20, 10)
    result.addstr(1, 0, new)
    result.addstr(3, 3, text)
    result.refresh()
    curses.flash()
    win.clear()

    win.refresh()
    win.getch()

curses.wrapper(main)
print(locale.getpreferredencoding()) #gibt utf-8 aus
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

In https://github.com/python/cpython/blob/ ... ad.py#L100 steht die Zeile ``if curses.ascii.isprint(ch):`` und das filtert effektiv alles was nicht ASCII ist, denn nur in dem ``if``-Zweig werden eingegebene Zeichen in das Textpad eingefügt.

Schau Dir Alternativen zu `curses` an. python-prompt-toolkit, urwid, …
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten