python tkinter destroy上衣

2024-04-26 18:47:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我对tkinter顶层小部件有点问题。每当我试图破坏顶层窗口时,它不会关闭,而是变为不活动的。每当我点击这个本应被销毁的窗口时,就会出现一个memoryaddress错误。有人知道我做错了什么吗?在

示例代码:

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()

Tags: 代码fromimport示例timetitle部件tkinter
1条回答
网友
1楼 · 发布于 2024-04-26 18:47:08

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

from tkinter import *
root = Tk()
root.title('root')
login = Toplevel(root)
login.title('login')
root.after(3000, login.destroy)
root.mainloop()

根据TkinterSummary

All Tkinter access must be from the main thread (or, more precisely, the thread that called mainloop). Violating this is likely to cause nasty and mysterious symptoms such as freezes or core dumps.

相关问题 更多 >