es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Necesito envolver una cadena de texto cada n caracteres y solo mantener las últimas 12 líneas.

He estado trabajando en esto por un tiempo y lo mejor que se me ocurre es usar textwrap, pero no puedo encontrar la manera de mantener solo las últimas 12 líneas usando textwrap. El enlace a las funciones de textwrap está aquí: https://docs.python.org/3/library/textwrap.html.

(Estoy haciendo esto con curses, así que supongo que también están abiertas las funciones de curses).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Si estás usando curses, puedes usar la función win.getmaxyx() para obtener las dimensiones de la ventana y luego restarle 12 a la dimensión de las filas para obtener la fila de inicio de las últimas 12 líneas. Una vez que tengas la fila de inicio, puedes recorrer tu texto, envolviéndolo con textwrap.wrap() y usando win.addstr() para agregar el texto envuelto a la ventana comenzando desde la fila designada. Aquí tienes un ejemplo de fragmento de código:

    import curses
    import textwrap
    
    def main(stdscr):
        # Obtener dimensiones de la ventana
        max_y, max_x = stdscr.getmaxyx()
    
        # Calcular fila de inicio de las últimas 12 líneas
        last_12_start = max_y - 12
    
        # Texto ficticio para envolver
        dummy_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget tellus mauris. Nulla tellus enim, commodo eget risus a, accumsan tristique risus. Etiam non euismod nulla. Suspendisse potenti. "
    
        # Envolver y agregar texto a la ventana
        wrapped_text = textwrap.wrap(dummy_text, width=max_x)
        for i, line in enumerate(wrapped_text):
            if i >= last_12_start:
                stdscr.addstr(i - last_12_start, 0, line)
    
    curses.wrapper(main)
    

    Este código envolverá el dummy_text utilizando textwrap.wrap() y lo agregará a la ventana de curses comenzando en la fila después de las últimas 12 líneas. Ten en cuenta que la función addstr() toma dos argumentos: la fila y la columna (0 en este caso) donde comenzar a agregar el texto.

Comments are closed.