【发布时间】:2019-03-14 18:03:05
【问题描述】:
我正在与 Tkinter 合作制作用户界面。 我不明白“master”和“root”之间的区别。
我在这里找到了一些信息:Python interface to Tcl/Tk¶
要访问包含给定窗口小部件的顶级窗口,您通常只需引用该窗口小部件的主窗口即可。当然,如果小部件已被打包在框架内,则主窗口不会代表顶层窗口。要访问包含任意小部件的顶层窗口,您可以调用 _root() 方法。此方法以下划线开头,表示此函数是实现的一部分,而不是 Tk 功能的接口。
但我还是不明白。所以我做了一些代码,但我看不出得到的结果有什么不同(***)。
使用“大师”
from tkinter import *
master = Tk() ***
Canvas = Canvas(master) ***
Canvas.pack()
def create_circle(x, y, r, canvas):
x0 = x - r
y0 = y - r
x1 = x + r
y1 = y + r
return canvas.create_oval(x0, y0, x1, y1)
create_circle(100, 100, 20, Canvas)
master.mainloop() ***
使用“根”
from tkinter import *
root = Tk() ***
Canvas = Canvas(root) ***
Canvas.pack()
def create_circle(x, y, r, canvas):
x0 = x - r
y0 = y - r
x1 = x + r
y1 = y + r
return canvas.create_oval(x0, y0, x1, y1)
create_circle(100, 100, 20, Canvas)
root.mainloop() ***
【问题讨论】:
-
master似乎只是当前小部件的父级,而root是根小部件。如果您当前的小部件在三者中很深,那么master和root会有所不同。 -
啊,在您的代码中,您使用变量名
master来指代根小部件,因此会造成混淆。每个小部件都有一个master属性,它将为您提供其父级。当你在树的深处有一个时,它的父级将不是根小部件。