在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()
有谁能解释我做错了什么?我不明白,也没有看到与内存有关的问题。如果我注释掉插入,只有删除,那就没有内存问题所以循环本身不应该归咎于我所知,只有插入。
答案 0 :(得分:2)
我找到了罪魁祸首。对于默认情况下的文本小部件" maxundo"设置为0,因此Tkinter会记录插入其中的所有内容。将此设置为1解决了问题。修改:undo=False
效果更好。