2017-12-22 9 views
-2

tkinter 프레임에서 함수를 호출하는 방법을 알 수 없습니다. 실수로 닫힌 경우 응용 프로그램에서 정보를 보호하는 메서드를 구현하려고합니다. 누군가 제발 도와 줄 수 있니?Tkinter 프레임에서 함수를 호출 할 수 없습니다.

from tkinter import Tk, Frame, Label 

class MyApp(Tk): 
    def __init__(self, *args, **kwargs): 
     Tk.__init__(self, *args, **kwargs) 
     container = Frame(self) 
     container.pack(side="top", fill="both", expand = True) 

     frame = StartPage(container, self) 
     frame.grid(row=0, column=0, sticky='nsew') 
     frame.tkraise() 

class StartPage(Frame): 
    def __init__(self, parent, controller): 
     Frame.__init__(self,parent) 
     Label(self, text="close this window from the X in the corner").grid(row=1,column=1) 

    def Stop(self):          
     print('exiting') 

app = MyApp() 

if __name__=='__main__': 
    try: 
     app.mainloop() 
    finally: 
     OpenApp = MyApp() 
     OpenClass = StartPage(parent, OpenApp) 
     OpenClass.Stop() 

tkinter를 닫을 때 "정지"기능을 호출 할 수 없습니다. NameError : name 'parent'가 정의되지 않았습니다. "부모"대신 무엇을 넣어야합니까? root.protocol ("WM_DELETE_WINDOW", root.iconify) 을 사용하는 경우 클래스 내부의 함수를 호출해야합니다. 당신이 parent 이름없는 만든 절대 참조를 전달하려는 parent 인수를 전달하는

OpenClass = StartPage(OpenApp, OpenApp) 

class StartPage(Frame): 
     def __init__(self, parent, controller): 

당신이 필요합니다 :

OpenClass = StartPage(parent, OpenApp) 

에 :

+0

오류를 생성하는 코드를 표시하고 실제 오류 및 완전한 오류를 표시하십시오. 지금 당신의 코드에서 '멈춤'을 호출하는 것은 없습니다. –

+0

"중지"는 코너에서 "X"를 눌러 tkinter 프레임을 닫으면 시작됩니다. 실수로 응용 프로그램을 닫을 때 응용 프로그램을 보호 할 수있는 방법을 구현하려고합니다. – qode

+0

시도한 것을 보여주십시오. –

답변

1

라인을 변경해보십시오 .

tkinter 앱에서 부모는 대개 에 어린이가 포함 된 다른 위젯입니다..

+0

MCVE를 만들면 편집 후 OP 문제가 무엇인지 알 수있게되었습니다. – Nae

+0

감사합니다. 이것은 질문을 해결했다. – qode

+0

@qode 문제가 없습니다. close 이벤트를 처리하는 더 일반적인 방법은 [WM_DELETE_WINDOW] (http://example.com)을 참조하십시오. – Nae