【问题标题】:Python Tkinter class structure practicePython Tkinter 类结构实践
【发布时间】:2016-02-16 12:19:42
【问题描述】:
#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()

这是一种好的做法,或者换句话说,如果我不打算添加除画布之外的任何小部件,直接从画布而不是框架继承是否存在问题?

我的另一个问题是关于root.destroy()。我不明白为什么我不能说master.destroy() 或类似的话。

【问题讨论】:

    标签: python python-2.7 tkinter tkinter-canvas


    【解决方案1】:

    Canvas 或任何其他 Tkinter 小部件继承没有错。

    re 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多