#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 而不是框架继承是否存在问题,例如,如果我不打算添加除 Canvas 之外的任何小部件?
我的另一个问题是关于root.destroy()
。我不明白为什么我不能说 master.destroy()
或类似的东西。
最佳答案
从 Canvas
或任何其他 Tkinter 小部件继承没有任何问题。
re master.destroy()
与 root.destroy()
:您可以随意调用它。您只需要对根窗口的引用。如果您将其称为root
,则要销毁它,您将调用root.destroy()
。
一般来说,您应该避免使用全局变量。鉴于您将根小部件传递给您的类,您可以保存引用并使用它:
class Game(tk.Canvas):
def __init__(self, master):
self.master = master
...
def quit_game(self):
self.master.destroy()
关于Python Tkinter 类结构实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35432462/