Tkinter で小さなアプリケーションを作成しています。ウィンドウが閉じられたときに呼び出される関数でいくつかのものをきれいにしたいと思います。ウィンドウのクローズイベントをその関数にバインドしようとしています。それが可能かどうか、また対応するシーケンスは何なのかわかりません。
Python のドキュメントには次のように書かれていますSee the bind man page and page 201 of John Ousterhout’s book for details
。
残念ながら、これらのリソースは手元にありません。バインドできるイベントのリストを知っている人はいますか?
__del__
別の解決策は、Frame クラスのすべてを消去することです。理由は不明ですが、呼び出されていないようです。何が原因か分かる人いますか?いくつかの循環依存関係?
コントロールを追加するとすぐに (以下のコードでコメントを外します)、__del__
はもう呼び出されません。その問題の解決策はありますか?
from tkinter import *
class MyDialog(Frame):
def __init__(self):
print("hello")
self.root = Tk()
self.root.title("Test")
Frame.__init__(self, self.root)
self.list = Listbox(self, selectmode=BROWSE)
self.list.pack(fill=BOTH, expand=1)
self.pack(fill=BOTH, expand=1)
def __del__(self):
print("bye-bye")
dialog = MyDialog()
dialog.root.mainloop()