首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python tkinter销毁toplevel

python tkinter销毁toplevel
EN

Stack Overflow用户
提问于 2014-04-16 12:52:54
回答 1查看 2.3K关注 0票数 1

我的Toplevel小部件有点问题。每当我试图摧毁一个托普莱尔窗口,它不会关闭,相反,它会变得不活跃。每当我单击本应被销毁的窗口时,我都会得到一个内存地址错误。有人知道我做错了什么吗?

示例代码:

代码语言:javascript
复制
from tkinter import *
import _thread as thread
import time
root = Tk()
root.title('root')
login = Toplevel(root)
login.title('login')
thread.start_new_thread(root.mainloop,())
time.sleep(3)
login.destroy()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 13:14:13

Tkinter不是线程安全的。所有Tkinter调用都应该来自一个线程。使用root.after来安排在延迟后发生的函数调用。

代码语言:javascript
复制
from tkinter import *
root = Tk()
root.title('root')
login = Toplevel(root)
login.title('login')
root.after(3000, login.destroy)
root.mainloop()

根据TkinterSummary

所有Tkinter访问必须来自主线程(或者更准确地说,是调用main循环的线程)。违反这一规定可能会引起严重而神秘的症状,如结冰或堆芯。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23110048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档