Те же результаты, что и у «root» и «master», при использовании tkinter. Тогда, когда использовать каждый? - PullRequest
0 голосов
/ 14 марта 2019

Я работаю с Tkinter, чтобы создать пользовательский интерфейс.Я не понимаю разницы между "master" и "root".

Я нашел некоторую информацию здесь: Интерфейс Python для Tcl / Tk¶

Toпопасть в окно верхнего уровня, которое содержит данный виджет, вы часто можете просто обратиться к мастеру виджета.Конечно, если виджет был упакован внутри фрейма, мастер не будет представлять окно верхнего уровня.Чтобы попасть в окно верхнего уровня, содержащее произвольный виджет, вы можете вызвать метод _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 ]

1 голос
/ 14 марта 2019

Я работаю с Tkinter, чтобы создать пользовательский интерфейс. Я не понимаю разницы между "master" и "root".

Нет никакой разницы. Это просто имя, вы можете называть это как хотите.

Поскольку виджеты tkinter существуют в дереве, корнем которого является один виджет, root является официальным именем этого виджета. Из-за этого root стало наиболее распространенным именем переменной, используемой для доступа к этому виджету. Тем не менее, вы можете дать ему любое имя, которое хотите, потому что это только удобство для вас. Ткинтеру все равно, как ты это называешь.

Документация Tkinter также иногда относится к хозяевам и рабам, а иногда к родителям и детям. За исключением корневого окна, все виджеты имеют мастера (или родителя). Эта терминология используется главным образом в контексте менеджеров геометрии pack, place и grid как способ описания того, как поместить один виджет в другой.

0 голосов
/ 17 марта 2019

Я бы просто осторожно использовал мастер, см. Ниже;)

Здесь вся история .... 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...