Python 3.x 如何更新tkinter标签

Python 3.x 如何更新tkinter标签,python-3.x,list,tkinter,Python 3.x,List,Tkinter,我试图使用一个生成标签的函数在tkinter选项卡上的标签中显示用户输入,但它不是每次运行时都更新,而是打印一个新标签。我该怎么阻止这一切?我的代码如下所示: 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

我试图使用一个生成标签的函数在tkinter选项卡上的标签中显示用户输入,但它不是每次运行时都更新,而是打印一个新标签。我该怎么阻止这一切?我的代码如下所示:

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()
请尝试以下操作:

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()
导入时间
从tkinter进口*
root=Tk()
calNums=[]
cal_display=StringVar()
mylabel=标签(根,文本变量=校准显示,浮雕=凸起)
mylabel.pack()
def displayScreenProgress():
打印(calNums)
校准显示设置(校准单位)
def键(事件):
如果event.keysym==“1”:
calNums.append(1)
睡眠时间(0.05)
显示屏幕进度()
root.bind_all(“”,键)
root.mainloop()
您应该只创建一次标签,并在函数中使用它


您所做的是在每次调用函数时创建一个新标签。

时间睡眠(0.05)的目的是什么?如果我没有时间睡眠(0.05)?它将触发快速,一次小小的点击将导致多个字符。我认为系统键盘处理程序将满足您的按键重复延迟和按键重复率。另外,由于
calNums
是一个数组,
calu display.set(calNums)
可能不会给出预期的结果,因为数字将被空格分隔。
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()