Python Tkinter 类结构实践

标签 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 而不是框架继承是否存在问题,例如,如果我不打算添加除 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/

相关文章:

c++ - 我可以平滑 3 channel 图像中的 1 个 channel 吗?

python - IOError: [Errno 2] 没有这样的文件或目录

用于多个输入和平均结果的 Python 配置文件

python - 列出 `tkinter` 中的可用字体系列

python - TkInter:如何显示正常的光标?

python - 无法从 PIL 图像构造 tkinter.PhotoImage

python - 重新排列 numpy 数组中行的条目

python Pandas : How to unique strings in a column

python - 如何在 numpy 数组中添加维度? (125, 125) 至 (125, 125, 1)

python - 如何使用线程获取数据并将数据写入同一个文本文件