繁体   English   中英

Python tkinter、标签和函数顺序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM