为什么 delete 方法不为 Tkinter 中的小部件释放内存?

Why does the delete method not free up memory for a widget in Tkinter?

在 Tkinter 中,我有一大块代码可以更新和清除 ScrolledText 小部件。然而,我在测试期间注意到存在与此相关的内存泄漏,在缩小范围后,复制此行为的最简单方法是:

import tkinter
import tkinter.scrolledtext
def meme(box_text):
    while True:
        box_text.insert("end", "meme")
        box_text.delete(1.0, "end")
window_main = tkinter.Tk()
box_text = tkinter.scrolledtext.ScrolledText(window_main)
button = tkinter.Button(window_main, command=lambda: meme(box_text))
box_text.pack()
button.pack()
window_main.mainloop()

谁能解释我做错了什么?我不明白也看不出这与记忆有关的问题。如果我注释掉插入,只有删除,就没有内存问题,所以据我所知,循环本身不是罪魁祸首,只有插入。

我找到了罪魁祸首。对于文本小部件,默认情况下 "maxundo" 设置为 0,因此 Tkinter 会记录插入其中的所有内容。将其设置为 1 解决了这个问题。编辑:undo=False 效果更好。