tkinter - 调用 tk.Destroy() 会阻止我以后使用其他 tk 窗口?
问题描述
我想在继续运行我的代码之前关闭所有现有的 tk 窗口,而且我还没有Tk()
对象的句柄。所以我想我会尝试以下我的错误的最小示例,它使用Tk.destroy()
:
import tkinter as tk
Tk = tk.Tk()
Tk.destroy()
window1 = tk.Tk()
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
f1,ax1 = plt.subplots()
frame1 = tk.Frame(window1,width=300,height=300,bg='blue')
frame1.place(x=0,y=0)
canvas1 = FigureCanvasTkAgg(f1,frame1)
canvas1.get_tk_widget().grid(row=0,column=0)
canvas1.draw()
编辑:
输出:
can't invoke "event" command: application has been destroyed
while executing
"event generate $w <<ThemeChanged>>"
(procedure "ttk::ThemeChanged" line 6)
invoked from within
"ttk::ThemeChanged"
解决方案
创建窗口后调用Tk.update()
可防止显示此错误:
import tkinter as tk
Tk = tk.Tk()
Tk.update() ### WE CALL TK.UPDATE()
Tk.destroy()
window1 = tk.Tk()
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
f1,ax1 = plt.subplots()
frame1 = tk.Frame(window1,width=300,height=300,bg='blue')
frame1.place(x=0,y=0)
canvas1 = FigureCanvasTkAgg(f1,frame1)
canvas1.get_tk_widget().grid(row=0,column=0)
canvas1.draw()
我假设错误是由于您试图在窗口实际存在于屏幕上之前关闭它。
推荐阅读
- typescript - 如果函数将超类作为其返回类型,TypeScript 可以返回子类吗?
- selenium - Docker 和 Selenium 网格错误。转发新会话时出错 空池
- reactjs - 使用 React Router 切换到不同组件时出现随机内存泄漏错误
- excel - 数组公式中的 IFERROR="" 未输入空白
- python - 从 ascii 表中选择 5 个随机数据元素
- java - 根据特定输入动态生成字符串的代码
- c++ - 如何解析列存储格式的 XML 文件?
- python - 在 pythonanywhere.com 上使用 PyRFC 连接到 SAP
- javascript - formArray 循环不完整的值
- javascript - 取消预定的网络音频