Bearbeiten von Text mit Python und Curses Textbox Widget?

Hat jemand ein funktionierendes Beispiel für die Verwendung der curses.textpad.Textbox Widget, um vorhandenen Text zu bearbeiten? Das ist natürlich in einem Linux-Terminal (zB xterm).

  • Wie man ein Wort in ncurses Bildschirm eingeben?
  • Was ist der kurze Weg, um das gleiche Symbol an der angegebenen Stelle in ncurses hinzufügen?
  • Verwenden von python subprocess.call (), um einen ncurses-Prozess zu starten
  • Python3 + Curses: Wie man "q" drückt, um das Programm sofort zu beenden?
  • Flucht in python getstr () während erfrischend
  • Mit fluchen mit raw_input in python
  • Wie entpackst du sehr große Dateien in Python?
  • Überprüfen Sie, ob ein Verzeichnis in einer Zip-Datei mit Python existiert
  • Wie lese ich aus einer Zip-Datei in Zip-Datei in Python?
  • Transponieren / Entpacken Funktion (invers Zip)?
  • Python: Herunterladen und Entpacken einer ZIP-Datei ohne auf Festplatte zu schreiben
  • Entpacken der Verzeichnisstruktur mit Python
  • 4 Solutions collect form web for “Bearbeiten von Text mit Python und Curses Textbox Widget?”

    Hier finden Sie einige Minuten

    import curses import curses.textpad stdscr = curses.initscr() # don't echo key strokes on the screen curses.noecho() # read keystrokes instantly, without waiting for enter to ne pressed curses.cbreak() # enable keypad mode stdscr.keypad(1) stdscr.clear() stdscr.refresh() win = curses.newwin(5, 60, 5, 10) tb = curses.textpad.Textbox(win) text = tb.edit() curses.beep() win.addstr(4,1,text.encode('utf_8')) 

    Ich habe auch eine Funktion gemacht, um ein Textfeld zu erstellen:

     def maketextbox(h,w,y,x,value="",deco=None,underlineChr=curses.ACS_HLINE,textColorpair=0,decoColorpair=0): nw = curses.newwin(h,w,y,x) txtbox = curses.textpad.Textbox(nw) if deco=="frame": screen.attron(decoColorpair) curses.textpad.rectangle(screen,y-1,x-1,y+h,x+w) screen.attroff(decoColorpair) elif deco=="underline": screen.hline(y+1,x,underlineChr,w,decoColorpair) nw.addstr(0,0,value,textColorpair) nw.attron(textColorpair) screen.refresh() return txtbox 

    Um es zu benutzen, machen Sie einfach:

     foo = maketextbox(1,40, 10,20,"foo",deco="underline",textColorpair=curses.color_pair(0),decoColorpair=curses.color_pair(1)) text = foo.edit() 

    textpad.Textbox(win, insert_mode=True) bietet grundlegende Insert-Unterstützung. Backspace muss hinzugefügt werden.

    Der Anfangscode hat nicht funktioniert, beschlossen, einen Hack zu haben, das funktioniert im Einfügemodus und dann, wenn man die Strg-G-Anzeige den Text an der richtigen Position drückt.

     import curses import curses.textpad def main(stdscr): stdscr.clear() stdscr.refresh() win = curses.newwin(5, 60, 5, 10) tb = curses.textpad.Textbox(win, insert_mode=True) text = tb.edit() curses.flash() win.clear() win.addstr(0, 0, text.encode('utf-8')) win.refresh() win.getch() curses.wrapper(main) 

    Ich habe festgestellt, dass das Edit Widget im urwid- Paket für meine Bedürfnisse ausreichend ist. Das ist nicht das Textpad-Widget, sondern etwas anderes. Das urwid Paket ist sowieso total schöner. Allerdings ist es immer noch nicht schmerzfrei. Das Edit Widget erlaubt das Einfügen von Text, aber nicht überschreiben (mit Ins-Taste umgeschaltet), aber das ist keine große Sache.

    Python ist die beste Programmiersprache der Welt.