在我的 GUI 中,我创建一个 ttk.notebook,然后将文本小部件放入每个选项卡中,并将日志/信息转储到这些文本小部件中。如果使用一组新的日志文件重新启动进程,我.forget()
旧选项卡,然后创建新选项卡。我注意到,当我这样做时,原始文本小部件使用的内存并未被清除。我怎样才能释放这只公羊?
示例:
from tkinter import *
from tkinter.ttk import Notebook
main = Tk()
def maker():
nb = Notebook(main, name='nbook')
nb.grid(row=0, column=0, columnspan=2)
frame1 = Frame(name='frame1')
txt = Text(frame1, wrap=NONE)
txt.grid()
nb.add(frame1, text='textwindow')
txt.insert('end', 'hello\n' * 1000000)
def remover():
print(main.winfo_children())
for tab in main.children['nbook'].tabs():
main.children['nbook'].forget(tab)
print(main.winfo_children())
b1 = Button(main, text='Insert', command=maker)
b1.grid(row=1, column=0)
b2 = Button(main, text='Clear tabs', command=remover)
b2.grid(row=1, column=1)
main.mainloop()
在示例中,当您单击“插入”时,它会创建小部件并将一堆文本转储到其中。如果您使用“清除选项卡”按钮调用删除程序,它会忘记所有选项卡,但该文本使用的内存永远不会空闲。即使您销毁了文本小部件,内存也不会被释放。我怎样才能释放这个?
最佳答案
Text.delete('1.0', END)
Text.edit_reset()
将清除文本小部件的历史记录,因此在删除后调用此方法。 希望这能解决您的问题
关于python - 清除 Tkinter TEXT 小部件使用的 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988625/