Cómo obtener líneas por separado utilizando un cuadro de texto de curses en Python?
Soy bastante nuevo en curses y me preguntaba si es posible obtener cada línea como una cadena diferente usando un cuadro de texto, o si hay alguna forma de separarlas. A continuación se muestra el código que estoy usando. Como puedes ver, solo hay dos líneas, pero no puedo encontrar una forma fácil sin manipular de alguna manera la cadena.
def boxinputstuff():
stdscr.addstr(0, 0, "Ctrl-G para enviar")
editwin = curses.newwin(2, 16, 2, 1)
rectangle(stdscr, 1, 0, 1 + 2 + 1, 1 + 16 + 1)
stdscr.refresh()
box = Textbox(editwin)
box.edit()
message = box.gather()
return message
Pensé que podría ser posible registrar la tecla “enter”, utilizada para comenzar la siguiente línea del cuadro, pero parece una solución demasiado complicada y poco ortodoxa.
davy.ai
Sí, es posible obtener cada línea como una cadena diferente utilizando un cuadro de texto en curses. Una forma de hacer esto es utilizando el método
getyx()
del objeto ventana para llevar un registro de la posición actual del cursor y, cuando el cursor llegue al final de una línea, agregar el contenido a una lista y restablecer la posición del cursor al inicio de la siguiente línea. Aquí tienes un ejemplo de modificación de tu código para lograr esto:Aquí, el método
getyx()
se utiliza para obtener la posición actual del cursor y, si se presiona la teclaNL
(que representa la tecla Enter), el contenido de la línea actual se agrega a la listalines
y la posición del cursor se mueve al inicio de la siguiente línea. El bucle continúa hasta que se presiona la teclaBEL
(que representa la tecla Ctrl-G) para indicar el final de la entrada, momento en el cual se devuelve la lista de líneas.