Je veux connaître les coordonnées de l'extrémité droite de Label réalisé avec tkinter.
Reportez-vous à [tkinter] Try using Label pour les éléments de base tels que comment organiser le cadre et l'étiquette.
(Cet article fait partie de Running Label with tkinter [Python]. Je l'ai divisé en articles séparés pour faciliter la recherche.)
txt=Labeltext
label=ttk.Label(master=root,text=txt,font=("Meilio",fontsize))
label.place(x=xx,y=yy)
Ensuite, l'extrémité gauche de «label» est Mochimon xx. Alors, quelle est la coordonnée la plus à droite sur l'affichage de l'étiquette?
label.winfo_reqwidth()+xx
J'ai d'abord pensé que len (txt) * fontsize
( fontsize
est en pixels px) fonctionnerait. Cependant, avec le programme introduit dans Exécution d'étiquette avec tkinter [Python], il s'enroule avant que l'étiquette ne passe à l'extrémité droite, selon la chaîne de caractères. J'ai.
Cela est dû au fait qu'il s'agit de len (txt)
. Pour cette implémentation
iiiii
AAAAA
Est traité de la même longueur.
C'est là qu'intervient winfo_reqwidth ()
.
Selon https://effbot.org/tkinterbook/widget.htm
Returns the “natural” width for this widget. The natural size is the minimal size needed to display the widget’s contents, including padding, borders, etc. This size is calculated by the widget itself, based on the given options. The actual widget size is then determined by the widget’s geometry manager, based on this value, the size of the widget’s master, and the options given to the geometry manager.
En bref, il renvoie la taille minimale requise pour afficher l'objet spécifié (Label dans ce cas) sur le Frame. En ajoutant la coordonnée la plus à gauche xx de label
à cela, vous pouvez obtenir la coordonnée la plus à droite de label
actuelle.
J'ai pu juger la bonne extrémité avec succès.
label=ttk.Label(master=root,text=txt,font=("Meilio",fontsize),foreground="red",background="green")
print(label.winfo_reqwidth())
>>125
print(label.winfo_reqheight())
>>45
txt="Labeltext\nLabeltext"#Lors de l'affichage sur deux lignes
label=ttk.Label(master=root,text=txt,font=("Meilio",fontsize),foreground="red",background="green")
print(label.winfo_reqwidth())
>>125#La largeur ne change pas
print(label.winfo_reqheight())
>>86#Depuis qu'il est devenu deux lignes, il a augmenté. Cependant, ≠ 45*Notez que c'est 2.
Recommended Posts