Je travaille avec Tkinter pour créer une interface utilisateur. Je ne comprends pas la différence entre "master" et "root".

J'ai trouvé des informations ici : Interface Python vers Tcl/Tk¶

Pour accéder à la fenêtre de niveau supérieur qui contient un widget donné, vous pouvez souvent simplement vous référer au maître du widget. Bien sûr, si le widget a été compressé à l'intérieur d'un cadre, le maître ne représentera pas une fenêtre de niveau supérieur. Pour accéder à la fenêtre de niveau supérieur qui contient un widget arbitraire, vous pouvez appeler la méthode _root (). Cette méthode commence par un trait de soulignement pour indiquer le fait que cette fonction fait partie de l'implémentation, et non une interface avec la fonctionnalité Tk.

Mais je ne comprends toujours pas. J'ai donc fait du code, mais je ne vois aucune différence dans les résultats obtenus (***).

UTILISATION DE "MASTER"

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()   ***

UTILISATION DE "ROOT"

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()   ***
1
Aizzaac 14 mars 2019 à 21:03

2 réponses

Meilleure réponse

Je travaille avec Tkinter pour créer une interface utilisateur. Je ne comprends pas la différence entre "master" et "root".

Il n'y a pas de différence. C'est juste un nom, tu peux l'appeler comme tu veux.

Puisque les widgets tkinter existent dans une arborescence qui a un seul widget comme racine, root est le nom officiel de ce widget. Pour cette raison, root est devenu le nom le plus courant pour la variable utilisée pour accéder à ce widget. Cependant, vous êtes libre de lui donner le nom que vous voulez, car le nom n'est que pour vous. Tkinter se fiche de ce que vous appelez.

La documentation de Tkinter fait aussi parfois référence aux maîtres et aux esclaves, et parfois aux parents et aux enfants. À l'exception de la fenêtre racine, tous les widgets ont un maître (ou parent). Cette terminologie est principalement utilisée dans le contexte des gestionnaires de géométrie pack, place et grid pour décrire comment placer un widget dans un autre.

3
Bryan Oakley 14 mars 2019 à 18:41

Je ferais juste attention à utiliser master, voir ci-dessous;)

Voici toute l'histoire....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()
0
1966bc 17 mars 2019 à 13:16