无法从Tkinter Frame

时间:2017-12-22 02:17:27

标签: python tkinter

我无法弄清楚如何从tkinter框架调用函数。我正在尝试实现一种方法,以便在App无意中关闭时保护App的信息。有人可以帮忙吗?

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:名称'parent'未定义。我该怎么做而不是“父母”? 如果使用     root.protocol(“WM_DELETE_WINDOW”,root.iconify) 仍然必须调用类中的函数。

1 个答案:

答案 0 :(得分:1)

尝试更改行:

OpenClass = StartPage(parent, OpenApp)

为:

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

要求您传递parent参数,您尝试传递一个从未创建名为parent的引用。

请注意,在tkinter应用程序中,parent通常是另一个包含子项的小部件。