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

问题描述

最近在学习使用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()

阅读 2.2k
2 个回答
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()

label.configure执行后添加 win.update() 强制GUI更新

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题