我是GUI开发的新手,正在尝试使用Python3.6+Tkinter构建一个应用程序。
我有一个要求,当用户点击一个按钮时,我需要用一个新的文本更改默认文本(创建时由标签显示)。为了达到这个目的,我使用(text="")
为了给您提供我的需求的简化版本,请考虑下面的示例,其中标签最初显示“欢迎”。当用户单击按钮时,标签文本应更改为“流程已启动”,流程完成后,标签文本应更改为“流程已完成”。这里do_something函数运行一个需要一些时间的进程,我使用(5)来模拟一个运行5秒的进程。from tkinter import *
from tkinter import ttk
import time
def do_something():
(text="Process Started")
(5) #some process/script that takes few seconds to execute
(text="Process Completed")
root = Tk()
label = (root, text="Welcome")
()
button = (root, text="Click to Start Process", command=do_something)
()
()
预期:
我的期望是,当用户点击按钮时,Label将显示“Process Started”5秒,最后在流程完成执行后,Label将更新为“Process Complete”。
问题:
我看到的是,当我按下按钮时,标签文本从“欢迎”变为(5秒后)“进程完成”。我不明白为什么我的标签没有在按下按钮后立即显示“进程已启动”。
如上所述,我是GUI开发的新手,我第一次学习Python和Tkinter。所以我可能会在程序本身犯一些错误。因此,如果我在程序流/逻辑本身中犯了任何基本错误,请原谅我的无知。我很想听听你的想法,谢谢!
编辑:正如@Rawing指出的,有一个类似的问题-Why does pause tkinter window before it opens
但是,基本的区别是,我希望在do_something函数完成执行之前不返回mainloop。