Mes excuses, je suis assez nouveau dans ce domaine...
Je ne parviens pas à "écraser" mon cadre tkinter. J'ai écrit ceci pour démontrer mon problème :
from tkinter import *
bgCol = 'red'
def destroyMasterFrame():
global master
master.destroy()
createMasterFrame()
def createMasterFrame():
global master, bgCol
if bgCol == 'green':
bgCol = 'red'
else:
bgCol='green'
master = Frame(root, bg=bgCol)
master.bind("<Button-1>", lambda event: destroyMasterFrame())
master.pack(side='top', fill='both', expand='yes')
print(master)
root = Tk()
root.geometry('200x200+100+100')
createMasterFrame()
root.mainloop()
Donc, à chaque fois que je clique sur le carré de couleur, je pensais que je détruisais le cadre et que je recommençais, mais print(master)
me donne...
.!frame
.!frame2
.!frame3
.!frame4
.!frame5
...à chaque fois que je clique. Je sais que j'ai probablement raté quelque chose de fondamental, mais toute aide serait la bienvenue. Merci.
Editar:
Si j'ajoute une image au cadre que je suis en train de détruire, il semble la conserver, ainsi que la référence du cadre, dans la mémoire, ce qui semble remplir rapidement la mémoire en cas d'utilisation répétée. Ce code démontre ce que je veux dire... Comment détruire le cadre, sa référence, et effacer de la mémoire tout ce qu'il contient ?...
from tkinter import *
def destroyMasterFrame():
global master
master.destroy()
createMasterFrame()
def createMasterFrame():
global master
master = Frame(root, bg='green')
master.pack(side='top', fill='both', expand='yes')
img = PhotoImage(file='test.png')
label = Label(master, image=img)
label.image = img
label.bind("<Button-1>", lambda event: test())
label.pack(side='top', fill='both', expand='yes')
print(master)
def test():
global myrange
myrange = 1000
for x in range(myrange):
createMasterFrame()
destroyMasterFrame()
root = Tk()
root.geometry('200x200+100+100')
createMasterFrame()
root.mainloop()
Merci encore pour votre aide !