Ich nutze npyscreen unter Windows 11 und Python 3.10 in Verbindung mit windows-curses. Generell zeigen sowohl die cmd.exe als auch die PowerShell problemlos Umlaute an und erlauben ebenso auch deren Eingabe. Wenn ich aber eine npyscreen App starte und er somit in die Curses-Umgebung wechselt, dann klappt zwar weiterhin die Anzeige der Umlaute, nicht jedoch deren Eingabe. Bei letzterem wird einfach nichts angezeigt, wenn ich zB ein "ä" eingebe und der Cursor springt auch nicht weiter.
Da Windows ja seit einiger Zeit auch das Installieren von Linux-Gastsystemen via WSL2 erlaubt, habe ich genau das mal getan und eine Ubuntu-Umgebung aufgesetzt (20.04 LTS). Hier verhält es sich bei den Eingaben wie gewünscht: Ich kann problemlos Umlaute bzw nicht-ASCII-Zeichen in mein npyscreen-Formular eintragen.
Das Problem ist wahrscheinlich etwas exotisch, aber ich hoffe trotzdem, dass irgendwer helfen kann. Die Frage ist ja auch, ob das eine Sache von npyscreen ist (da wurde recht spät der UTF-8 Support nachgerüstet) oder ob windows-curses die betreffenden Eingaben nicht unterstützt. Ich jedenfalls bin mit meinem Latein am Ende.
Hier noch der (triviale) Code zum Problem (die Umlaute sind zum Testen gedacht):
Code: Alles auswählen
#!/usr/bin/env python3
import npyscreen
class TestApp(npyscreen.NPSApp):
def main(self):
form = npyscreen.ActionForm(name="Create new äccount")
owner = form.add(npyscreen.TitleText, name="Owner:")
address = form.add(npyscreen.TitleText, name="Äddress:")
iban = form.add(npyscreen.TitleText, name="IBAN:")
credit = form.add(npyscreen.TitleText, name="Credit:")
form.edit()
print(owner.value)
def main():
TestApp().run()
if __name__ == "__main__":
main()