请问python使用tkinter库的Label.configure去改变Label文本的语句,为什么总是最后一步才执行呢?

作者站长头像
站长
· 阅读数 7

问题描述

最近在学习使用tkinter库来编辑一些GUI,一个小场景就是面板上有一个开始按钮,有一个Label标签,标签开始显示“这是旧的标签文本”,点击更新按钮后标签变成“这是更新后的标签文本”,然后在执行更新的DEF中做了一个print输出,和一个sleep来验证执行顺序,结果发现每次都是点了更新按钮,先执行了print,再执行sleep,最后才执行Label.configure改变标签文本。请问如果我把Label.configure放在代码最前面,如何才能先执行呢?

相关代码

粘贴代码文本(请勿用截图)

# 导入所需库
import time
from tkinter import *

# 创建 tkinter 窗口或小部件的实例
win = Tk()
win.geometry("700x350")


def update_text():
    # 配置 Label 小部件中的文本
    label.configure(text="这是更新后的标签文本")# 按照顺序想先执行这一句
    print('测试哪句先执行')# 但是每次都是先执行这一句
    time.sleep(5)


# 创建 Label 小部件
label = Label(win, text="这是旧的标签文本", font=('Helvetica 14 bold'))
label.pack(pady=30)

# 创建一个按钮以更新 label 小部件的文本
button = Button(win, text="更新", command=update_text)
button.pack()

win.mainloop()

回复
1个回答
avatar
test
2024-06-30
import time
from tkinter import *

win = Tk()
win.geometry("700x350")

def update_text():
    # 配置 Label 小部件中的文本
    label.configure(text="这是更新后的标签文本")
    win.update_idletasks()  # 强制更新GUI
    print('测试哪句先执行')
    time.sleep(5)

label = Label(win, text="这是旧的标签文本", font=('Helvetica 14 bold'))
label.pack(pady=30)

button = Button(win, text="更新", command=update_text)
button.pack()

win.mainloop()
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容