Python tkinter IntVar() trace_add()

r_v=tk.IntVar(master,value,name)
master: (Optional)The variable is associated with, default value is parent window.
value:(Optional) We can set the initial value for the variable.
name : (Optional) Name given default is PY_VAR1

Tkitner IntVar() get(), set(), trace() methods to manage data and trigger call back functions

trace_add()

trace_add(self, mode, callback)
For an IntVar() we can check the different modes of this variable and trigger call back functions. This is the main advantage of using such variables.

read :Read - the variable is read by someone
write :Write- the variable is written ( updated ) by someone ( frequently used).
unset :undefined – The variable is deleted

or a list or tuple of such strings.
db1.trace_add(['write','read'],my_r) # callback when data changes


IntVar()
Here is an example which uses w ( write ) mode to display the value of the variable when ever it changes.
We used one Button and used on Click event to change the value of this variable db1 from 5 to 10.
b1 = tk.Button(my_w,text='Update',command=lambda:db1.set(10))
This triggers the trace_add() which used the callback function my_r() to print the value of the variable ( 10 ) to our console.
import tkinter as tk
from tkinter import *
my_w = tk.Tk()
my_w.geometry("300x100")  # Size of the window 
my_w.title("www.plus2net.com")  # Adding a title

def my_r(*args):
    print(int1.get()) #  Print when variable changes.
	
int1 = tk.IntVar(my_w) # declare IntVar()
int1.set(5) 

b1 = tk.Button(my_w,text='Update',command=lambda:int1.set(10))  
b1.grid(row=2,column=3,padx=30,pady=10)

int1.trace_add('write',my_r) # monitor the change of variable
my_w.mainloop()
Output
10
Use StringVar() for handling String data
Use DoubleVar() for handling Float Data

set() and get() methods of IntVar

In above examples we used set() method to assign data to the Integer variable and to read the data stored we used get() method. These two methods are frequently used in our scripts.
int1.set(10) # assign value to int1
print(int1.get()) # display the value assigned to int1

Initializing IntVar

We can using set() method to assign data to IntVar, after declaring or we can assign value while declaring the string variable.
int1=tk.IntVar(value=5) # Assign value to int1

Length of IntVar

Before using len function, we have to convert the IntVar to string by using str()
print(len(str(int1.get())))

Normal Variable and IntVar

IntVar() is a class in Tkinter. In a GUI application we require various events to be captured to trigger different functions (requirements). If we use normal Python variable with widgets then monitoring the changes is difficult. However by using a IntVar we can monitor the changes and trigger functions based on the requirements.

Displaying selected Radio button value

IntVar set and get method to show selected radio button value
We can associate one IntVar() to three set of radio buttons and then on selection we can display the value using one Label.
Here we are using get() method to read the data of the IntVar() r_v. This data we are displaying using Label ( l1 ) config() method.
import tkinter as tk
my_w = tk.Tk()
my_w.geometry("400x200")  # Size of the window
 
r_v=tk.IntVar() # Declaring the integer variable 
r_v.set(2) # Set the value of IntVar to 2

r1=tk.Radiobutton(my_w,text='One',value=1,variable=r_v,font=20)
r1.grid(row=0,column=0,padx=15,pady=15)

r2=tk.Radiobutton(my_w,text='Two',value=2,variable=r_v,font=20)
r2.grid(row=0,column=1,padx=15,pady=15)

r3=tk.Radiobutton(my_w,text='Three',value=3,variable=r_v,font=20)
r3.grid(row=0,column=2,pady=15)

l1=tk.Label(my_w,text='Output',font=22,bg='yellow')
l1.grid(row=1,column=0,columnspan=3,sticky='ew')

def my_upd(*args): 
    my_data=r_v.get() # read the value of selected radio button
    l1.config(text=str(my_data)) # Update the Label with data

r_v.trace_add('write',my_upd) # call the my_upd() once data is changed. 
my_upd() # Update function 

my_w.mainloop()  # Keep the window open


StringVar() DoubleVar() BooleanVar()
Subscribe to our YouTube Channel here


Subscribe

* indicates required
Subscribe to plus2net

    plus2net.com







    Python Video Tutorials
    Python SQLite Video Tutorials
    Python MySQL Video Tutorials
    Python Tkinter Video Tutorials
    We use cookies to improve your browsing experience. . Learn more
    HTML MySQL PHP JavaScript ASP Photoshop Articles FORUM . Contact us
    ©2000-2024 plus2net.com All rights reserved worldwide Privacy Policy Disclaimer