Python Tkinter类结构实践

时间:2016-02-16 12:19:42

标签: python python-2.7 tkinter tkinter-canvas

#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()或其他相似的东西。

1 个答案:

答案 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()