我正在学习Tkinter并尝试理解面向对象编程的概念。我在网上找到了这段代码:
class MyFirstGUI:
def __init__(self, master):
self.master = master
master.title("A simple GUI")
self.label = Label(master, text="This is our first GUI!")
self.label.pack()
self.greet_button = Button(master, text="Greet", command=self.greet)
self.greet_button.pack()
self.close_button = Button(master, text="Close", command=master.quit)
self.close_button.pack()
def greet(self):
print("Greetings!")
root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
这段代码之前运行得很好,我也理解了小部件的特性以及它们的作用。但是,我稍微编辑了一下代码,如下所示:
class Timer:
def __init__(self, master):
self.master = master
master.title = ("A simple GUI")
self.label = Label(master, text="first GUI")
self.label.pack()
self.greet_button = Button(master, text="Greet", command=self.greet)
self.greet_button.pack()
self.close_button = Button(master, text="Close", command=master.quit)
self.close_button.pack()
def greet(self):
print("Greetings!")
master = Tk()
my_gui = Timer(master)
master.mainloop()
令我惊讶的是,这段代码也完美地运行了。我的问题是,使用“master”而不是“root”的区别是什么?在代码中,“master”关键字的目的是什么?据我所知,“self”类似于Java中的“this”关键字,因此我假设self和master不同?感谢各位的帮助!如果我表达不够清晰,请见谅。
master
和root
都不是关键字。它们只是某人选择的变量。它们可以是任何不同的东西。另外,self
也是类似的,但它是一个非常强的约定。 - quamrana