无法从Tkinter Frame调用函数

问题描述 投票:-2回答:1

我无法弄清楚如何从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),则仍然必须调用类中的函数。

python tkinter
1个回答
1
投票

尝试更改线路:

OpenClass = StartPage(parent, OpenApp)

至:

OpenClass = StartPage(OpenApp, OpenApp)

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.