我有一个继承
tk.Listbox
的类来支持存储原始值,但是我似乎有内存泄漏,因为每次我删除列表框中的所有项目时,内存都不会被释放。
有没有我可以更改的参数或其他东西,这样它就不会保留内存?
我自定义的列表框类:
class ListBoxObjects(tk.Listbox):
def __init__(self, *args, **kwargs):
self._original_items = []
super().__init__(*args, **kwargs)
self.configure(selectmode=tk.EXTENDED)
def get(self, original = True, *args, **kwargs) -> list:
if original:
return self._original_items
return super().get(*args, **kwargs)
def insert(self, index: str | int, *elements: str | float) -> None:
_ret = super().insert(index, *elements)
self._original_items.extend(elements)
return _ret
def delete(self, *indexes: int) -> None:
if indexes[-1] == "end":
indexes = range(indexes[0], len(self._original_items))
indexes = sorted(indexes, reverse=True)
for index in indexes:
super().delete(index)
del self._original_items[index]
def clear(self) -> None:
super().delete(0, tk.END)
self._original_items.clear()
我正在调用清除方法然后插入,内存一直在上升。
填充列表框的代码:
self.lst_message_log.clear() # Method in ListBoxObjects
self.lst_message_log.insert(tk.END, *messages) # Method in ListBoxObjects
我已经尝试过 StackOverflow,但找不到与此相关的任何内容。