【发布时间】:2023-03-20 04:00:01
【问题描述】:
我正在学习 Tkinter 并尝试理解 OOP 概念。我在网上看到了这段代码:
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”有什么区别?代码中的“主”关键字的用途是什么?据我了解,'self' 类似于 Java 中的 'this' 关键字,所以我假设 self 和 master 不一样?
提前感谢您的帮助!如果我问的不够清楚,请道歉。
【问题讨论】:
-
master和root都不是关键字。它们只是某人选择的变量。它们可以是任何不同的东西。self也是类似的,但它是一个非常强大的约定。