首页 > 解决方案 > 删除 tkinter 类中的实例化对象?

问题描述

我正在尝试制作一个 GUI,我需要能够删除 Comic 类中的实例化对象(在漫画列表中)。我还需要能够从名称列表中删除它。(漫画名)

这是我查找要删除的对象的功能

def delete_comic():
    for c in comics:
        if c._name == delete_selected_comic.get():
            c._delete_comic()
    update_label()

这是我用于实际删除对象的类、函数和函数。

class Comic:
    def __init__(self, name, stock):
        self._name = name
        self._stock = stock
        comics.append(self)
        comic_names.append(name)

    def _delete_comic(self):
        self._stock = 0
        self._name = ""
        del self 

将 stock 和 name 设置为 0 和空白实际上不会删除对象,我不确定如何使用 del self.

任何有关如何删除此对象的帮助都会非常有用。提前致谢

标签: pythonpython-3.xtkinterinstantiation

解决方案


您不能删除其本身的对象。相反,您可以将其设置为None并让垃圾收集器将其删除:

def delete_comic():
    for i, c in enumerate(comics):
        if c._name == delete_selected_comic.get():
            comics[i] = None
    update_label()

如果你真的想删除那里的对象,你可以这样做:

def delete_comic():
    delete_indicies = []
    for i, c in enumerate(comics):
        if c._name == delete_selected_comic.get():
            delete_indicies.append(i)
    for i in delete_indicies:
        del comics[i]
    update_label()

推荐阅读