在下面的脚本中,button_01和button_02在" self"中创建。和" root"分别。它们的创建是否有任何功能差异? GUI看起来都是一样的。
import Tkinter as tk
class App(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
frame1 = tk.Frame(root, padx=2, pady=2, borderwidth=2, relief="raised")
frame1.pack(side=tk.RIGHT)
button_01 = tk.Button(self, text ="tk Button 1") # self with tk.Button
button_01.config(width=15, fg="black", bg="lightskyblue")
button_01.pack(side=tk.BOTTOM)
button_02 = tk.Button(root, text ="tk Button 2") # root with tk.Button
button_02.config(width=15, fg="black", bg="lime")
button_02.pack(side=tk.BOTTOM)
button_03 = tk.Button(frame1, text ="tk Button 3") # frame1 with tk.Button
button_03.config(width=15, fg="black", bg="lightcoral")
button_03.pack(side=tk.TOP)
if __name__ == "__main__":
root = tk.Tk()
app = App(root)
app.pack(fill="both", expand=True)
#
root.mainloop()
答案 0 :(得分:0)
不,self
和root
不一样。窗口小部件位于树状层次结构中,具有单个根。当您致电tk.Tk()
时,您正在创建此根窗口。
self
表示方法所属的对象。在这种情况下,窗口小部件是tk.Frame
的子类,它是root
的子节点。
尝试为框架提供背景颜色(例如:self.configure(background="red")
,您将看到按钮具有不同的父级。在此特定示例中,gui看起来是相同的,无论您使用root
还是{{1只是因为它是一个非常简单的gui,布局非常简单。