Seite 1 von 1

Breite eines text-Items in canvas

Verfasst: Dienstag 30. Juni 2009, 14:37
von KlausMerkert
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

Verfasst: Dienstag 30. Juni 2009, 15:08
von wuf
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:

Verfasst: Dienstag 30. Juni 2009, 15:19
von KlausMerkert
Hallo wuf,

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

Viele Grüße

Klaus Merkert