#game class
import Tkinter as tk
class Game(tk.Canvas):
def __init__(self, master):
canvas = tk.Canvas(master)
canvas.pack()
button = tk.Button(canvas, text='Quit', command=self.quit_game)
button.pack()
def quit_game(self):
root.destroy()#Should i put something else here?
root = tk.Tk()
game = Game(root)
root.mainloop()
这是一个好的做法,换句话说,是否存在直接从canvas继承而不是框架的问题,例如,如果我不打算添加除画布之外的任何小部件?
我的另一个问题是关于root.destroy()
。我不明白为什么我不能说master.destroy()
或其他相似的东西。
答案 0 :(得分:1)
继承Canvas
或任何其他Tkinter小部件没有任何问题。
重新master.destroy()
vs root.destroy()
:您可以根据需要调用它。您只需要对根窗口的引用。如果您将其称为root
,要销毁它,您可以拨打root.destroy()
。
通常,您应该避免使用全局变量。鉴于您已将根小部件传递给您的类,您可以保存引用并使用它:
class Game(tk.Canvas):
def __init__(self, master):
self.master = master
...
def quit_game(self):
self.master.destroy()