Home > OS >  Tkinter - Printnig return function in a label
Tkinter - Printnig return function in a label

Time:12-06

i don't really undestand, why the "results" label is not updating when i click on the button.

If someone can help me to understand!

Thank You

from tkinter import *
from tkinter import ttk

def add_function(): 
  results.config(n1.get()   n2.get())


root = Tk()
root.geometry("500x100") # Size of the window
root.title("Add Calculator") # Title of the window


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


n1 = DoubleVar()
n1_entry = Entry(main_frame, width= 10, textvariable= n1)
n1_entry.grid(column=2, row=1, sticky=(N))

symbol_add = Label(main_frame, text=" ")
symbol_add.grid(column=3, row=1, sticky=(N))

n2 = DoubleVar()
n2_entry = Entry(main_frame, width= 10, textvariable= n2)
n2_entry.grid(column=4, row=1, sticky=(N))

symbol_equal = Button(main_frame, width=10, text="=", command= add_function )
symbol_equal.grid(column=5, row=1, sticky=(N))

results = Label(main_frame, text=add_function(), background="#C0C0C0")
results.grid(column=6, row=1, sticky=(N))

root.mainloop()

I've tryed different variant, but it's either i have an error, or the label is printing a random number even before i modify the entry.

CodePudding user response:

It is because you don't update the label. Returning something from a button command is pointless because the caller isn't your code. It's called from mainloop and mainloop doesn't know what to do with the return code.

To update the label you must call the configure method:

results.configure(text=n1.get()   n2.get())
  • Related