如果我所使用的方法看不到tk.Toplevel(root),如何关闭当前窗口?
这是我的意思的一个小例子:
file1.py:
import Tkinter as tk
import file2
class ExampleMain:
def __init__(self, root):
self.mainFrame = tk.Frame(root)
...
tk.Button(self.mainFrame, command=self.button_pressed)
...
def button_pressed(self):
self.whatever = tk.Toplevel(root)
self.app = file2.ExampleNotMain(self.whatever)
if __name__ == '__main__':
root = tk.Tk()
app = ExampleMain(root)
root.mainloop()
file2.py:
import tkinter as tk
class ExampleNotMain:
def __init__(self, root):
self.frame = tk.Frame(root)
...
tk.Button(self.frame, command=self.close_window)
...
def close_window(self):
=> missing_command_here
在此示例中,我想关闭创建的第二个窗口(并保留第一个窗口)。
如果所有代码都在一个文件中,例如
self.whatever.destroy()
会这样做。我的问题是我看不到第一个文件中的对象,而命令在第二个文件中。
我发现了类似的东西
execfile("file2.py")
但我不喜欢这种解决方案。
有没有更好的方法来解决我的问题?
我真的很感谢您的帮助。 预先感谢。
答案 0 :(得分:0)
创建ExampleNotMain时,无论传递第二个顶级self.。在ExampleNotMain.__init__
中,它绑定到root
。 (master
或parent
是更好的参数名称)。在__init__
中,添加self.top
= root (or whatever you call the passed-in toplevel). In
close_window , add
self.top.destroy()`。