【发布时间】:2016-06-01 20:40:28
【问题描述】:
本着解耦的精神,我没有将许多小部件塞进一个巨大的类中,而是尝试将它们分成不同的类。
我遇到的问题是 FileMenu 类不知道 root,因此无法调用 root.quit 或 root.destroy。一时兴起,我尝试了 self.quit,它确实有效,但我以前从未见过它使用过。
我的问题是:
- self.quit 是退出应用的安全方法吗?
- sys.exit 是退出应用的安全方法吗?
- 如果两者都不安全,是否有一种很好的方法来解耦设计并安全退出,而不会将 root 作为参数传递到任何地方或使其成为全局参数?
我的例子:
import Tkinter as tk
class FileMenu(tk.Menu):
def __init__ (self, parent):
tk.Menu.__init__(self, parent, tearoff=False)
self.add_command(label='Exit', command=self.quit)
class MainMenu(tk.Menu):
def __init__ (self, parent):
tk.Menu.__init__(self, parent, tearoff=False)
self.file_menu = FileMenu(self)
self.add_cascade(label='File', menu=self.file_menu)
class View:
def __init__ (self, parent):
self.frame = tk.Frame(parent)
self.parent = parent
self.menu = MainMenu(self.frame)
self.parent.configure(menu=self.menu)
self.parent.geometry('200x200')
self.frame.pack(fill='both', expand=True)
class App:
def __init__ (self):
self.root = tk.Tk()
self.view = View(self.root)
def run (self):
self.root.title('Window Title')
self.root.mainloop()
if __name__ == '__main__':
app = App()
app.run()
【问题讨论】:
标签: python python-2.7 tkinter tk