Ich möchte die Koordinaten des rechten Endes des mit tkinter erstellten Labels kennen.
Unter [tkinter] Try using Label finden Sie grundlegende Informationen zum Anordnen von Rahmen und Etikett.
(Dieser Artikel ist Teil von Running Label with tkinter [Python]. Ich habe ihn zur einfachen Suche in separate Artikel unterteilt.)
txt=Labeltext
label=ttk.Label(master=root,text=txt,font=("Meilio",fontsize))
label.place(x=xx,y=yy)
Dann ist das linke Ende von label
Mochimon xx.
Was ist dann die am weitesten rechts liegende Koordinate auf der Etikettenanzeige?
label.winfo_reqwidth()+xx
Ich dachte zuerst, dass len (txt) * fontsize
( fontsize
ist in Pixel px) funktionieren würde. Mit dem in Ausführen von Label mit tkinter [Python] eingeführten Programm wird es jedoch abhängig von der Zeichenfolge umbrochen, bevor das Label an das richtige Ende verschoben wird. Ich habe.
Dies liegt an der Tatsache, dass es "len (txt)" ist. Für diese Implementierung iiiii AAAAA Wird als gleich lang behandelt.
Hier kommt winfo_reqwidth ()
ins Spiel.
Laut 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.
Kurz gesagt, es wird die Mindestgröße zurückgegeben, die erforderlich ist, um das angegebene Objekt (in diesem Fall Beschriftung) im Frame anzuzeigen. Durch Hinzufügen der am weitesten links liegenden Koordinate xx von "label" erhalten Sie die am weitesten rechts liegende Koordinate des aktuellen "label". Ich konnte das richtige Ende erfolgreich beurteilen.
Übrigens können Sie die Höhe mit `winfo_reqheight ()` ermitteln. Das ist,
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"#Bei Anzeige über zwei Zeilen
label=ttk.Label(master=root,text=txt,font=("Meilio",fontsize),foreground="red",background="green")
print(label.winfo_reqwidth())
>>125#Die Breite ändert sich nicht
print(label.winfo_reqheight())
>>86#Da es zwei Zeilen wurde, nahm es zu. Jedoch ≠ 45*Beachten Sie, dass es 2 ist.
Recommended Posts