首页 > 解决方案 > 我如何更新 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 函数中替换多个标签,但我想让示例更易于理解。

标签: pythontkinterwidget

解决方案


您可以使用该.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()函数中。

希望这可以帮助!


推荐阅读