python - 我如何更新 tkinter 中的某个小部件
问题描述
我想更新标签的位置,所以我使用 .update() 方法,在我用 .place() 方法替换它之后。问题是我窗口上的所有小部件都已更新,我不希望这样,因为程序工作得更加努力,而且我在“移动”我的标签时看到了滞后。我能做些什么?
...
def update_label:
l.place(relx = 0.2, rely = 0.1+0.2)
l.update()#here the program is updating every widget
l=tk.Label(root)
l.place(relx = 0.2, rely = 0.1)
b=Button(root,command(update_label()))
b.pack()
...
实际上,我想在 update_label 函数中替换多个标签,但我想让示例更易于理解。
解决方案
您可以使用该.update()
方法,但您的代码有一些问题。
首先,您将tk
属性与标签一起使用,但不与按钮一起使用。尽量保持一致。
我重新编写了您的代码并使其更清洁。它现在有效:
import tkinter as tk
root = tk.Tk()
root.geometry("500x500")
x = 0.2
y = 0.1
l = tk.Label(root, text = "label")
l.place(relx = x, rely = y)
def update_label():
global x, y
y += 0.2
l.place(relx = x, rely = y)
l.update()#here the program is updating every widget
b = tk.Button(root,text = "update", command = update_label)
b.pack()
希望这可以帮助!
编辑:
书写l.update()
不会更新或移动任何其他小部件。如果您希望移动/更新所有小部件,则必须将它们放入update_label()
函数中。
希望这可以帮助!