python - 清除 Tkinter TEXT 小部件使用的 RAM

标签 python python-3.x tkinter textbox

在我的 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/

相关文章:

python - python函数如何返回对象?

python - 复制单元格包含多条数据的行

python-3.x - Tkinter:如何制作圆角文本小部件?

python - FigureCanvasTkAgg 的声明导致内存泄漏

python - 对象之间无缘无故共享字典?

python - 连续绿色日

python - 如何在初始化时创建和存储类的实例?

python - Tkinter StringVar 错误

python - 有效地将长度为 n 的列表的 pandas 数据帧转换为 n 个数据帧

python - 检查一组字母是否可以组成一个单词(考虑字母可以使用的次数)?