дубликат элементов после перезапуска

Рейтинг: 0Ответов: 1Опубликовано: 10.02.2023

С основного окна вызываю довернее окно tkinter, в нем в цикле добавляю кнопки, после закрытия его (не основного), и снова вызов открытия с главного, почему-то остались кнопки с прошлого раза и тем самым происходит дубляж. Код дочернего окна:

from tkinter import *

def closes():
    window.destroy()

window = Toplevel()

names = [] 

for i in range(2):
    names.append('widjet'+str(i))

for j in range(2):
    names[j] = Button(window, text='button'+str(j), command=closes).grid(row=j, column=0)

window.mainloop()

Код дочернего и основго окна находятся в разных скриптах, по логике закрытия скрипта с дояерним, должны стерется все данные, но этогш не происходит.

Upd: Вопрос решен. Оказывается, я не знал, что при старте обращаютмя ко всем глобальным переменным во всех используемых скриптах, и после вызова скрипта к ней уже не происходит обращение, от того и сохранялись данные. Глобальные переменные нужно самому обнулять если таковое требуется.

Ответы

▲ 0

Можете попробовать проверить наличие экземпляров виджетов с помощью функции .winfo_exists(). Эта функция проверяет существование виджетов. https://progler.ru/blog/python-winfo-ismapped-i-winfo-exists-v-tkinter здесь подробнее