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).

  • Vim von der Quelle in Cygwin
  • Linux: Pipe in Python (ncurses) Skript, Stdin und Termios
  • Was ist der kurze Weg, um das gleiche Symbol an der angegebenen Stelle in ncurses hinzufügen?
  • Python curses remote debugging pdevd fehler in setupterm
  • Python ncurses: Zeigt nicht den Bildschirm bis zum ersten Tastendruck an, obwohl Refresh zuerst ist
  • Mit fluchen mit raw_input in python
  • Wie entpackst du sehr große Dateien in Python?
  • Transponieren / Entpacken Funktion (invers Zip)?
  • Entpacken der Verzeichnisstruktur mit Python
  • Wie kann man eine Datei mit Python aufheben
  • Entpacken Sie Zip-Dateien in Ordnern und Unterordnern mit Python
  • Wie lese ich aus einer Zip-Datei in Zip-Datei in 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.