[Python-es] Consulta

Miguel Sanchez miguel en mariaonline.org
Dom Mar 12 07:07:05 EDT 2023


El Sat, 11 Mar 2023 09:52:47 -0300
Carlos Alberto Vaccaro <carlosvaccaro1960 en gmail.com> dijo:

> Estoy haciendo un programa en python3 y Tkinter y utilizo un ScrolledText.
> para mostrar los datos que voy recibiendo.
> Quiero que automaticamente cuando los datos se van ingresando el texto se
> mueva hacia arriba de tal modo que siempre se vea la ultima linea agregada
> El siguiente es el codigo
> bandeja = scrolledtext.ScrolledText(cuadro_1,
> wrap = tkinter.WORD,
> width = 55,
> height = 10,
> font = ("Times New Roman",12))
> bandeja.place(x=15, y=30)


Hola:


Hace años hice algo parecido:

Siempre he usado Tk definiendo la aplicación como una clase.

Tanto los widget como las funcionalidades son métodos o atributos de esa clase.

Las definiciones de los widget estan empaquetados como un método de la clase

    def _area_salida(self):
        self.salida = tk.Text(self.top)
        ysb = ttk.Scrollbar(self.top, orient='vertical', command=self.salida.yview)
        self.salida.configure(background='green4')
        self.salida.configure(font=self.fija)
        self.salida.configure(foreground='#00e100')
        self.salida.configure(selectbackground='green1')
        self.salida.configure(state='disabled')
        self.salida.configure(width=60)
        self.salida.configure(height=20)
        self.salida.configure(wrap='word')
        self.salida.configure(yscroll=ysb.set)

        ysb.grid(row=0, column=3, sticky=(tk.N+tk.S))
        self.salida.grid(row=0, column=2, rowspan=3, sticky=tk.NW)
        self.salida['state'] = 'normal'
        self.salida.delete('1.0', 'end')
        self.salida['state'] = 'disabled'


Hay también un método para enviar el texto al widget:

    def escribesalida(self, texto, coma=False):
        """ Escribe algo en el widget "salida" """

        self.salida['state'] = 'normal'
        self.salida.insert('end', texto)
        if coma:
            self.salida.insert('end', ' ')
        else:
            self.salida.insert('end', '\n')
        self.salida.see('end')
        self.salida['state'] = 'disabled'


Para enviar texto llamas al método:

            self.escribesalida(u"Termino lo que estoy haciendo y voy.") escribirá el texto y un salto de linea
            self.escribesalida(u"Termino lo que estoy haciendo y voy.", ",") escribirá el texto sin el salto de linea


Espero te pueda ayudar en algo.


Saludos


Miguel Sánchez














Más información sobre la lista de distribución Python-es