Seguimiento de variables Tkinter en Python

No hay una forma incorporada de rastrear variables en Python. Pero tkinter admite la creación de contenedores de variables que se pueden usar para hacerlo adjuntando una devolución de llamada de ‘observador’ a la variable. La clase tkinter.Variable tiene constructores como BooleanVar, DoubleVar, IntVar y StringVar para valores booleanos de coma flotante de doble precisión, enteros y strings respectivamente, todos los cuales se pueden registrar en un observador que se activa cada vez que el valor de la variable es accedido El observador permanece activo hasta que se elimina explícitamente. También es importante tener en cuenta que la función de devolución de llamada asociada con el observador toma tres argumentos por defecto, es decir, el nombre de la variable Tkinter, el índice de la variable tkinter en caso de que sea una array o una string vacía y el modo de acceso.
En Python 3.5 y 2.7, los métodos anteriores, como trace_variable(), trace(), trace_vdelete() y trace_vinfo(), se reemplazan por los métodos mencionados a continuación.
 

  1. trace_add(): 
    El método trace_add() ha reemplazado al método trace_variable(). El método trace_add() se usa para agregar un observador a una variable y devuelve el nombre de la función de devolución de llamada cada vez que se accede al valor.
     

Sintaxis: trace_add(self, mode, callback_name) 
Parámetros:  
Mode: Es uno de “array”, “leer”, “escribir”, “desarmar”, o una lista o tupla de dichas strings. 
callback_name: Es el nombre de la función de devolución de llamada que se registrará en la variable tkinter. 
 

  1.  
  2. trace_remove():
    El método trace_remove() reemplaza al método trace_vdelete() y se usa para cancelar el registro de un observador. Devuelve el nombre de la devolución de llamada utilizada al registrar al observador a través del método trace_add() inicialmente. 
     

Sintaxis: trace_remove(self, mode, callback_name) 
Parámetros:  
Mode: Es uno de «array», «read», «write», «unset» o una lista o tupla de dichas strings. 
callback_name: Es el nombre de la función de devolución de llamada que se registrará en la variable tkinter. 
 

  1.  
  2. trace_info(): 
    El método trace_info() ha reemplazado el método trace_vinfo() y el método trace(). Devuelve el nombre de la devolución de llamada. Esto generalmente se usa para encontrar el nombre de la devolución de llamada que se va a eliminar. Este método no acepta más argumentos que la propia variable tkinter.
     
Syntax : trace_info(self) 
  1.  

Para comprender mejor la importancia de los métodos anteriores, tomemos un ejemplo y construyamos un widget simple. Aunque el uso de la variable Tkinter como variable de texto actualiza automáticamente el widget cada vez que cambia la variable, puede haber momentos en los que el desarrollador desee realizar un procesamiento adicional mientras lee o modifica (o cambia) la variable. Aquí es donde entra en juego el seguimiento de variables. Nuestra función de devolución de llamada se activará cada vez que cambie el texto en el widget y devolverá una string «Variable cambiada».
 

Python3

# Python program to trace
# variable in tkinter
 
 
from tkinter import *
 
 
root = Tk()
 
my_var = StringVar()
 
# defining the callback function (observer)
def my_callback(var, index, mode):
    print ("Traced variable {}".format(my_var.get())
 
# registering the observer
my_var.trace_add('write', my_callback)
 
Label(root, textvariable = my_var).pack(padx = 5, pady = 5)
 
Entry(root, textvariable = my_var).pack(padx = 5, pady = 5)
 
root.mainloop()

Veamos el código en acción donde el método trace_add() registra un observador que se activa cada vez que cambia la variable de texto en el widget.
Producción:
 

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *