使用tkinter时,“ root”和“ master”的结果相同。那么,何时使用每个?

时间:2019-03-14 18:03:06

标签: python tkinter

我正在与Tkinter一起制作用户界面。 我不了解“主”和“根”之间的区别。

我在这里找到了一些信息: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()   ***

2 个答案:

答案 0 :(得分:1)

  

我正在与Tkinter一起制作用户界面。我不了解“主”和“根”之间的区别。

没有区别。它只是一个名字,您可以随便叫它。

由于tkinter小部件存在于以单个小部件为根的树中,因此root是此小部件的正式名称。因此,root已成为用于访问此小部件的变量的最常用名称。但是,您可以随意给它命名,因为该名称只是给您带来方便。 Tkinter不在乎你怎么称呼它。

Tkinter文档有时也指主人和奴隶,有时也指父母和孩子。除根窗口外,所有小部件都具有主窗口(或父窗口)。此术语通常在几何管理器packplacegrid的上下文中使用,作为描述如何将一个小部件放入另一个小部件的方式。

答案 1 :(得分:0)

我会谨慎使用master,见下文;)

这是整个故事。...https://mail.python.org/pipermail/tutor/2010-June/076444.html

from tkinter import *
root = Tk()

Canvas = Canvas(root)

print(dir(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)

root.mainloop()