¿Alguien ha obtenido un ejemplo práctico del uso del widget curses.textpad.Textbox para editar texto existente? Esto es, por supuesto, en una terminal Linux (por ejemplo, xterm).¿Edita texto usando el widget de cuadro de texto de Python y maldiciones?
7
A
Respuesta
0
Encontré que el widget Edit
en el paquete urwid es suficiente para mis necesidades. Este no es el widget Textpad, sino algo diferente. El paquete urwid es en general mejor, de todos modos. Sin embargo, todavía no está libre de dolor. El widget Edit
permite insertar texto, pero no sobrescribir (alternar con la tecla Ins), pero eso no es gran cosa.
6
encontrado esto hay varios minutos
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'))
También hice una función para hacer un cuadro de texto:
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
Para usarlo simplemente hacer:
foo = maketextbox(1,40, 10,20,"foo",deco="underline",textColorpair=curses.color_pair(0),decoColorpair=curses.color_pair(1))
text = foo.edit()
3
textpad.Textbox(win, insert_mode=True)
proporciona básica insertar soporte. Retroceso necesita ser agregado sin embargo.
1
El código inicial no funcionó, decidió tener un truco, funciona en modo insertar y luego, cuando presiona Ctrl-G, muestra el texto en la posición correcta.
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)
Cuestiones relacionadas
- 1. Resaltado y selección de texto con las maldiciones de Python
- 2. Jquery fadeout texto en un cuadro de texto y texto
- 3. Cómo leer el texto de un texto Tkinter Widget
- 4. Cuadro de texto - centrado de texto
- 5. Cambiar el foco de un widget de texto a otro
- 6. Obtener el texto de asp: cuadro de texto
- 7. cuadro de texto TextTrimming
- 8. Insertar texto en el cuadro de texto de otra aplicación
- 9. Cuadro de texto árabe
- 10. Cuadro de texto enriquecido cómo resaltar el bloque de texto
- 11. Cómo resaltar texto en un widget de texto tkinter
- 12. ¿Texto subrayado en el widget Etiqueta Tkinter?
- 13. Cómo recuperar texto de Textbox en el widget de Android?
- 14. Pasar el valor del cuadro de texto usando Html.ActionLink
- 15. Valor escaneado (usando escáner) en el cuadro de texto
- 16. Cómo enfocar el cuadro de texto en WP7 usando MVVM?
- 17. ajuste de texto en el cuadro de
- 18. JQuery Texto predeterminado en el cuadro de texto vacío
- 19. texto fantasma - cómo tener en texto claro cuadro de texto
- 20. El uso de un cuadro de texto HTML en lugar de un cuadro de texto ASP.NET
- 21. Agregar texto al principio en el cuadro de texto enriquecido
- 22. Relleno de cuadro de texto
- 23. Creando un cuadro de texto WPF Control como el cuadro de texto del destinatario de Outlook
- 24. Python y manipulación de texto
- 25. Cómo supervisar el archivo de texto y salir continuamente del contenido en un cuadro de texto
- 26. ¿Cómo recupero un valor de cuadro de texto usando JQuery?
- 27. Eliminar autocompletar en el cuadro de texto
- 28. foco en el cuadro de texto
- 29. Obtener el texto de un cuadro desplegable
- 30. Cómo estilo de cuadro de texto usando CSS en ASP.NET
Gracias por el esfuerzo. Probé el Textbox ya. Pero su edición es demasiado básica. Ni siquiera puedes insertar texto. Esperaba encontrar algo más parecido a nano, pero incrustable en una aplicación. – Keith
Tuve que cambiar las dos últimas líneas a: 'stdscr.addstr (1,1, texto) stdscr.refresh()' para que funcione. Después de ingresar texto en el teclado, tuve que presionar Ctrl-G para enviarlo. –