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