如何解决函数在标签之前被调用,但标签应该先被打印出来
不知何故,我的 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 举报,一经查实,本站将立刻删除。