我无法弄清楚如何从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) 仍然必须调用类中的函数。
答案 0 :(得分:1)
尝试更改行:
OpenClass = StartPage(parent, OpenApp)
为:
OpenClass = StartPage(OpenApp, OpenApp)
class StartPage(Frame):
def __init__(self, parent, controller):
要求您传递parent
参数,您尝试传递一个从未创建名为parent
的引用。
请注意,在tkinter应用程序中,parent通常是另一个包含子项的小部件。