我对以下代码部分有疑问:
my_var = tk.StringVar(value="start")
my_label = tk.Label(self.root, textvariable=my_var)
def my_method(input):
my_var.set("working")
#make a method call to an external Python API; can take a few mins to finish
my_var.set("complete")
tk.Button(self.root, text="GO!", command=lambda: my_method(input))
我有一个按钮,单击该按钮时应执行my_method
该按钮,该按钮最初应将文本更改my_label
为working
,在外部 API 中处理一些操作,然后将标签更新为complete
。实际发生的是my_method
被调用,标签的文本不会改变,API 调用需要几分钟,然后我的标签更新为complete
. 我假设它可以快速处理两个设置命令,但我只看到最终的设置值。
发生这种情况是否有原因(我做错了什么)并且有解决方案吗?如果这是预期的行为,有人可以解释为什么会这样吗?
在写这篇文章的时候,我想可能会启动一个线程来执行初始的 set 调用,看看这是否可行。不过,我更喜欢更简单的解决方案。