Python уничтожает только виджет подкласса tkinter - PullRequest
0 голосов
/ 23 мая 2018

Я написал подкласс с виджетами tkinter.В цикле я помещаю несколько из них в рамку.Этот фрейм также содержит метку и запись.Теперь я хочу уничтожить все мои виджеты подкласса, но НЕ метку и запись.

Я попробовал это так:

for child in self.frame.winfo_children():
    if child.winfo_class() == "???":
         [...]

Но я не смог понять, что мне нужно использовать, поэтому я буду использовать ???в качестве заполнителя для этого.

Я помещаю их в правило с этим кодом:

db.execute("SELECT * FROM UsedSystems")
rows = db.fetchall()
i = 0

for row in rows:
    image_path = activepath+rows[i][0]
    name = rows[i][1]
    performance = rows[i][2]
    project = rows[i][3]
    date = rows[i][4]              

    self.e10 = CustomWidget(self.frame, image_path, name, performance, project, date)
    self.e10.grid(row=1+i,column=0, columnspan=2)

    i+=1

1 Ответ

0 голосов
/ 23 мая 2018

Попробуйте использовать встроенную функцию isinstance для проверки класса (как показано ниже):

for child in self.frame.winfo_children():
    if not (isinstance (child, Label) or isinstance (child, Entry)):
        child.destroy ()

Это уничтожит любой виджет, если он не является Label и Entry.Тем не менее, он не может различить различные Label виджеты (например) и оставит ОБА.

...