Placement de widget

Bonjour,
sujet certainement trivial mais je ne comprends pas la différence entre:

lab1=Label(fen1, text = "label dans fen1", bg='bisque', font=("Verdana", 10))
lab1.place(x=xl, y=yl)

et
lab1=Label(fen1, text = "label dans fen1", bg='bisque', font=("Verdana", 10)).place(x=xl, y=yl)
je n’ai pas trouvé d’explication mais c’est sûr il y a une différence de fonctionnement :slightly_smiling_face:

Salut,

Dans le premier cas lab1 est une variable référençant un label, et tu utilises ensuite cette variable pour placer le label sur la fenêtre.

>>> lab1=Label(fen1, text = "label dans fen1", bg='bisque', font=("Verdana", 10))
>>> lab1.place(x=xl, y=yl)
>>> lab1
<tkinter.Label object .!label>
>>> print(lab1)
.!label

Dans le deuxième cas le label n’est affecté à aucune variable mais tu utilises directement ce label pour le placer sur la fenêtre.
Tu stockes le résultat de l’appel à la méthode place (qui est None) dans lab1.

>>> lab1=Label(fen1, text = "label dans fen1", bg='bisque', font=("Verdana", 10)).place(x=xl, y=yl)
>>> lab1
>>> print(lab1)
None

je pensais affecter également une variable lab1 dans le second cas…
OK merci

Tu affectes bien une variable mais tu ne lui donnes pas la même valeur puisque tu lui donnes la valeur de retour de la méthode place, qui est None.

subtil, subtil…

Pour voir le problème différemment, c’est comme si tu faisais :

x = 5
print(x)

et

x = print(5)

Dans les deux cas ça affiche 5, mais la valeur de x n’est pas la même suivant le code utilisé.

oui, je comprends mais comme la différence de fonctionnement n’est pas toujours visible, je n’avais pas perçu le fond du problème , sauf quelque rares fois où cela m’avais étonné…sans éveiller le moindre soupçon… :woozy_face: