how to update tkinter lables

Viewed 26

Im trying to display user inputs in a lable on a tkinter tab using a function that makes a lable, but instead of it updating ever time I run it, it prints a new lable. How do I stop this? My code looks like this:

import time
from tkinter import *
import tkinter as tk
calNums = []
root = Tk()
def key(event):
    if event.keysym == '1':
        calNums.append(1)
        time.sleep(0.05)       
    displayScreenProgress()
root.bind_all('<Key>', key)
def displayScreenProgress():
    cal_display = StringVar()
    label = Label(root, textvariable=cal_display, relief=RAISED)
    cal_display.set(calNums)
    label.pack()
root.mainloop()

I have nine more of these for the other nine numbers:

if event.keysym == '1':
    calNums.append(1)
    time.sleep(0.05)   
1 Answers

Try following:

import time
from tkinter import *
root = Tk()

calNums = []
cal_display = StringVar()
mylabel = Label(root, textvariable=cal_display, relief=RAISED)
mylabel.pack()

def displayScreenProgress():
    print(calNums) 
    cal_display.set(calNums)

def key(event):
    if event.keysym == '1':
        calNums.append(1)
        time.sleep(0.05)       
    displayScreenProgress()

root.bind_all('<Key>', key)

root.mainloop()

You should create label only once and use that in the function.

What you were doing was creating a new label every time the function was called.

Related