Breite eines text-Items in canvas

Fragen zu Tkinter.
Antworten
KlausMerkert
User
Beiträge: 22
Registriert: Freitag 22. Mai 2009, 11:16

Liebe Forumsteilnehmer,

ich möchte zunächst betonen, dass ich bereits mindestens eine Stunde die üblichen Dokumentationen wie z.B. http://effbot.org/tkinterbook/canvas.htm und das Internet, speziell die Foren-Beiträge zu 'tkinter canvas create_text' durchsucht habe.
Ich möchte - am liebsten vorab - von einem text-Item, das ich in einer canvas mit create_text erzeuge, die Breite wissen. Der Weg über itemcget(item,'width') ergibt - richtigerweise - 0, da width die Bedeutung einer maximalen Breite habe und ich diese nicht gesetzt habe. Von Delphi her kenne ich die Funktion TextWidth(s), die das leistet, was ich möchte.

Viele Grüße

Klaus Merkert
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo KlausMerkert

Hier eine Möglichkeit für die Ermittlung der Breite und Höhe eines Canvas Text-Objektes:

Code: Alles auswählen

import Tkinter as tk

app_win = tk.Tk()

canvas = tk.Canvas(app_win, width=200, height=100)
canvas.pack()

canvas.create_text(20, 40, text="Mein Canvas Text-Objekt", anchor='nw',
    tags='my_text')

x1, y1, x2, y2 = canvas.bbox('my_text')

text_width = x2 - x1
text_height = y2 - y1

canvas.create_rectangle(x1, y1, x2, y2, outline='red')

print 'width = %d, height = %d' % (text_width, text_height)

app_win.mainloop()
Gruss wuf :wink:
Take it easy Mates!
KlausMerkert
User
Beiträge: 22
Registriert: Freitag 22. Mai 2009, 11:16

Hallo wuf,

super, das ist das, was ich gesucht habe. Herzlichen Dank!

Viele Grüße

Klaus Merkert
Antworten