[英]Python tkinter, labels, and function order
这看起来很简单,但我不知道我需要做什么来补救。 我有一个 tkinter 项目,按下按钮,一个函数运行需要几秒钟。 我想要在函数运行时出现“正在加载...”类型的消息,所以很明显它实际上正在工作并且没有崩溃。 我想一个标签会很简单,在函数的第一行,有label1.set('loading')
但我想由于函数的工作方式,标签在函数完成运行之前不会设置 -这没有帮助。
我做了第二个简短的功能
def update_status(message):
label1.set(message)
对于 tkinter 中的按钮,使用command=lambda:[update_status('loading'),search()]
希望 update_status() 函数首先运行,更改标签,然后是第二个 search() 函数运行时间超过 30 秒。 但我得到同样的效果。
完成运行 update_status() 函数的最简单方法是什么——从而更新我作为“状态”的标签,然后运行耗时的 search() 函数?
我不反对更复杂的东西,比如加载窗口或类似的东西,但只是想要一些简单的东西(我什至没有用谷歌搜索任何类型的加载窗口——我大部分时间都在关注如何让 2 个函数运行按顺序单击按钮)。
嘿,我不认为你需要 2 个函数来做你想做的事。 您只需更新您的root
,以便直接更新标签。
这是一个例子:
import tkinter as tk
import time
def update_status(message1, message2):
var.set(message1)
root.update()
time.sleep(5)
var.set(message2)
if __name__ == '__main__':
root = tk.Tk()
root.title("Wait for function")
var = tk.StringVar()
var.set('Waiting for input')
label1 = tk.Label(root, textvariable=var)
label1.pack()
Button1 = tk.Button(root, text="Wait", command=lambda:update_status('loading', 'done'))
Button1.pack()
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.