微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

函数在标签之前被调用,但标签应该先被打印出来

如何解决函数在标签之前被调用,但标签应该先被打印出来

不知何故,我的 Tkinter 代码显示标签之前调用了该函数,但是,标签应该先出现。

def doAction():
    global e
    text = tk.Label(root,text="Processing.")
    text.grid(row=2,columns=1)
    main()

import tkinter as tk

root = tk.Tk()
root.title("App")

e = tk.Entry(root)
e.grid(row=0,column=0,padx=10,pady=10)
e.focus_set()

button = tk.Button(root,text="Go",command=doAction)
button.grid(row=0,column=3)

root.mainloop()

背后的想法是先显示“Processing”,然后让函数“main()”做它的事情。

解决方法

一旦进入main(),就会有东西阻塞主线程,因此mainloop()无法更新。您必须在它调用 main() 之前强制更新它。

def doAction():
    .....
    text.grid(row=2,columns=1)

    root.update() # Now the event loop will start processing before the function ends
    main()

用您在 main() 中执行的任何操作冻结 GUI 都不是一个好主意,如果它没有与 tkinter 相关的代码,您可以为 main() 启动一个新线程.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。