Wie funktioniert Destructor beim Schließen eines Tkinter -Toplevel -Widgets?Python

Python-Programme
Anonymous
 Wie funktioniert Destructor beim Schließen eines Tkinter -Toplevel -Widgets?

Post by Anonymous »

Ich versuche zu verstehen, was passiert, wenn Sie ein Toplevel -Fenster schließen, insbesondere zu welchem ​​Punkt es nicht referenziert und für die Müllsammlung berechtigt ist. Sie öffnen das Toplevel mit der Taste, schließen das Toplevel mit dem Kreuz in der Ecke und der Destruktor führt seinen Code aus. < /P>

Code: Select all

from tkinter import *
from tkinter import ttk

class TestClass(Toplevel):
def __init__(self, *args, **kwargs):
Toplevel.__init__(self, *args, **kwargs)

self.title('A New Window')

print ('window created')

def __del__(self):
print('destructor called')

def AButtonPress():
#create a device window
new_window = TestClass(root)
root.wait_window(new_window)
print("window closed")

root = Tk()

a_button=ttk.Button(root,text="Press Me",command=AButtonPress)
a_button.grid(column=0, row=0)

root.mainloop()
< /code>
Wenn ich jedoch Widgets zum Toplevel hinzufüge, beispielsweise ein Etikett, wird der Destruktor nicht mehr genannt. < /p>
from tkinter import *
from tkinter import ttk

class TestClass(Toplevel):
def __init__(self, *args, **kwargs):
Toplevel.__init__(self, *args, **kwargs)

self.title('A New Window')

print ('window created')

#create a widget
self.a_label=ttk.Label(self,width=15,text = "A Label")
self.a_label.grid(column=0, row=0)

def __del__(self):
print('destructor called')

def AButtonPress():
#create a toplevel object
new_window = TestClass(root)
root.wait_window(new_window)
print("window closed")

root = Tk()

a_button=ttk.Button(root,text="Press Me",command=AButtonPress)
a_button.grid(column=0, row=0)

root.mainloop()
Bedeutet dies jetzt, dass das Toplevel keinen Müll mehr sammelt und wiederholt Öffnen und Schließen des Toplevels wird Speicher verbraucht?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post