Извинения Я довольно новичок в этом ...
Я не могу перезаписать мой кадр tkinter.Я написал это, чтобы продемонстрировать свою проблему:
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()
Поэтому каждый раз, когда я щелкаю по цветному квадрату, я думал, что разрушаю фрейм и начинаю все сначала, но print(master)
дает мне ...
.!frame
.!frame2
.!frame3
.!frame4
.!frame5
... за каждый раз, когда я нажимаю.Я знаю, что, возможно, здесь не хватает чего-то простого, но любая помощь будет высоко ценитсяСпасибо.
Редактировать:
Если я добавлю изображение к разрушаемому фрейму, оно, похоже, сохранит его вместе со ссылкой на фрейм впамять, которая, кажется, быстро заполняет память при повторном использовании.Этот код демонстрирует, что я имею в виду ... Как мне уничтожить фрейм, его ссылку и стереть все содержимое, содержащееся в нем, из памяти? ...
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()
Еще раз спасибо за вашу помощь!