문제

내가 만드는 작은 응용 프로그램 Tkinter.고 싶은 깨끗한 몇 가지 기능이라고 할 때 나 창이 닫힙니다.내가 노력하는 바인딩 close 이벤트 나의 창과 함께 하는 기능입니다.내가 알지 못하는 경우 그것은 가능한 것은 해당 시퀀스입니다.

Python 문서를 말한다: See the bind man page and page 201 of John Ousterhout’s book for details.

하지만 안타깝게도 지금으로서는 그러한 자원에 내 손에 있습니다.사 목록할 수 있는 이벤트는 바인딩?

대체 솔루션을 청소하는 모든 것에 __del__ 내 프레임의 클래스입니다.알 수 없는 이유로 그것을 것 같다는 그것은 결코 호출됩니다.사람이 무엇을 알고 있습니다.일부형의 종속성을 확인해야 합니다.

로,나를 추가하 제어(주석에서 아래 코드)에 __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()
도움이 되었습니까?

해결책

믿 은 bind 남자 페이지할 수 있습을 찾고있다;나는 이벤트 당신이 바인딩하려고하는 Destroy. __del__ 하지 않는 것입에 의존해(다만 너무 어려운 때를 알고 순환을 참조 루프로,예를 들어,부모는 아이를 위젯을 다시 중지에서 트리거!), 를 사용하여 이벤트는 바인딩은 확실히 좋습니다.

다른 팁

더 또는 더 적은에 대한 확실한 자원 이벤트 딩 남자 페이지 Tk.나는 정확하게 명확하지 않 당신이 무엇을 하고 싶은,그러나 바인딩에 "<Destroy>" 아마 이벤트를 찾고 있습니다.여부를 당신이 정말로 필요한,모르겠습니다.

 ...
 self.bind("<Destroy>", self.callback)
 ...
 def callback(self, event):
     print("callback called")
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top