Mantener ttk.Label en tiempo real

Iniciado por DeMoNcRaZy, 19 Diciembre 2021, 18:39 PM

0 Miembros y 1 Visitante están viendo este tema.

DeMoNcRaZy

Buenas,

Me gustaría saber si es posible mantener actualizado en tiempo real un ttk.Label con el texto que muestre.

Ya que lo tengo mostrando un mensaje de una base de datos externa (PyMysql) y me gustaría por ejemplo yo mismo desde la base de datos cambiar el mensaje y que se cambie en la ventana (label) sin tener que cerrar y abrir la aplicación (ventana) nuevamente.

O hace falta alguna librería en especial para mantener todo los datos que muestra en tiempo real.

Cualquier información adicional lo agradeceria.

Saludos.
Esta página web no está disponible - Google Chrome

.xAk.

Sí que puedes, en respuesta a un evento. Ahora no estoy muy familiarizado, un ejemplo que puede te sirva y veo por ahí

Código (python) [Seleccionar]
from tkinter import Tk, Label

root = Tk()
label = Label(root)
label.pack()
root.bind("<Motion>", lambda event: label.configure(text=f"{event.x}, {event.y}"))
root.mainloop()


fuente

Saludos



DeMoNcRaZy

Buenas, gracias por su respuesta. Pero añadiendo el evento de dicha forma no me muestra siquiera los datos.

Yo lo que tengo es esto y va bien

Código (python) [Seleccionar]
root = Tk()
root.title("Mostrar datos")

mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)


ttk.Label(mainframe, text=results).grid(column=3, row=2, sticky=W)



root.mainloop()



La variable results, es la que muestra el mensaje de la base de datos, ese es la que quiero mantener en tiempo real, o toda la ventana, me da igual la cosa es que se actualice en tiempo real sin tener que reiniciar la aplicación
Esta página web no está disponible - Google Chrome

.xAk.

ya te digo que estoy muy oxidado. Prueba a añadir un refresh de la "label" cuando le escribas los datos.

Saludos



EdePC

Depende de como se actualice tu base de datos, si lo haces desde el propio código python puedes simplemente mandar a actualizar el Label luego de hacer el cambio en la base de datos. Si la base de datos se actualiza independientemente a tu código python entonces puedes crear una función que se repita cada cierto tiempo, vaya a buscar el valor en la base de datos y actualice el Label

Código (python,9,14,15) [Seleccionar]
from tkinter import *

class App() :
  def __init__(self) :
    self.win = Tk()
    self.num = 0
    self.lbl = Label(self.win, text=self.num)
    self.lbl.pack()
    self.updater()
    self.win.mainloop()

  def updater(self) :
    self.num += 1
    self.lbl.configure(text=self.num)
    self.win.after(1000, self.updater)

App()


Por ejemplo este código tiene la función Updater que usa .after para ejecutarse a sí mismo cada 1000 milisegundos, dicha función actualiza (.configure) el texto del Label