In Canvas die Schriftgröße ändern?

Fragen zu Tkinter.
Antworten
Hopsi
User
Beiträge: 18
Registriert: Donnerstag 27. Mai 2004, 21:30

Hi Leute,

Kann ich beim, vom Canvas geschriebenen Text die Größe verändern?

Ich habe die GUI Version = Tk Version 8.4

Gruß
Hopsi
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Hopsi,

sollte mit der Methode canvas.itemconfigure(item, options...) gehen, item ist dabei die ID die du von canvas.create_text(...) bekommen hast. Bei options kannst Du einen neuen Font in der entsprechenden Grösse angeben.


Gruß

Dookie
Hopsi
User
Beiträge: 18
Registriert: Donnerstag 27. Mai 2004, 21:30

Danke,

kann ich das mit der Zeile so tun?
txt = my_canvas.create_text(x+4, y+35, fill="#000000", font="20")
aber irgend wie funktioniert es nicht so!
:?:
Gruß
Hopsi
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Hopsi

Hier ist etwas Code zum ausprobieren.

Code: Alles auswählen

from Tkinter import*

def ChangeFontSize(event):

	global cvtext,fontsize

	canvas.delete(cvtext)

	cvtext = canvas.create_text(20,
								20,
								text="Size",
								font=("Courier", fontsize,"bold"),
								fill="blue",
								anchor="nw")
	fontsize += 2

root = Tk()

fontsize = 10
cvtext   = None


canvas = Canvas(root,width=300,height=200,bd=5,relief='raised',bg='yellow')
canvas.pack()
canvas.bind('<Button-1>', ChangeFontSize)

ChangeFontSize(None)

root.mainloop()
Mit Klicken der linken Maustaste, auf
die Canvas wird die Schrift grösser.

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Hopsi hier ist nochmals wuf!

Hier habe ich noch eine bessere Variante:

Code: Alles auswählen

from Tkinter import*

def ChangeFontSize(event):

	canvas.itemconfigure(cvtext,font=("Courier",fontsize,"bold"))
	fontsize += 2

root = Tk()

fontsize = 10
cvtext   = None

canvas = Canvas(root,width=300,height=200,bd=5,relief='raised',bg='yellow')
canvas.pack()
canvas.bind('<Button-1>', ChangeFontSize)

cvtext = canvas.create_text(20,
							20,
							text="Size",
							font=("Courier",fontsize,"bold"),
							fill="blue",
							anchor="nw")

root.mainloop()
Gruss wuf :wink:
Take it easy Mates!
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

hier noch die Version mit itemcofigure

Code: Alles auswählen

from Tkinter import*

def ChangeFontSize(event):

   global canvas,cvtext,fontsize

   fontsize += 2
   canvas.itemconfigure(cvtext, font=("Courier", fontsize,"bold"))

root = Tk()

fontsize = 10
cvtext   = None


canvas = Canvas(root,width=300,height=200,bd=5,relief='raised',bg='yellow')
canvas.pack()
canvas.bind('<Button-1>', ChangeFontSize)

cvtext = canvas.create_text(20,
                            20,
                            text="Size",
                            font=("Courier", fontsize,"bold"),
                            fill="blue",
                            anchor="nw")

root.mainloop() 
Gruß

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

Hallo Dookie

Wie ich feststelle haben unsere Gedanken
mit 2 Minuten Unterschied wie ein RAID-1
System gearbeitet. Dies ohne jeden Hardware-
bzw. Softwareeinfluss Hi.

Gruss wuf :wink:
Take it easy Mates!
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Hi Wuf,

das erste Beispiel was du gepostet hast, geht auch unter Linux. Beispiel zwei bringt beim Anklicken eine Fehlermeldung

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "/var/tmp/python2.3-2.3.3-root/usr/lib/python2.3/lib-tk/Tkinter.py", line 1345, in __call__
    return self.func(*args)
  File "./xy.py", line 7, in ChangeFontSize
    canvas.itemconfigure(cvtext,font=("Courier",fontsize,"bold"))
UnboundLocalError: local variable 'fontsize' referenced before assignment
Wenn ich cvtext und fontsize als Global definiere, dann geht's auch mit deinem zweiten Beispiel

Code: Alles auswählen

#!/usr/bin/env python

from Tkinter import*

def ChangeFontSize(event):

   global cvtext, fontsize
   canvas.itemconfigure(cvtext,font=("Courier",fontsize,"bold"))
   fontsize += 2

root = Tk()

fontsize = 10
cvtext   = None

canvas = Canvas(root,width=300,height=200,bd=5,relief='raised',bg='yellow')
canvas.pack()
canvas.bind('<Button-1>', ChangeFontSize)

cvtext = canvas.create_text(20,
                     20,
                     text="Size",
                     font=("Courier",fontsize,"bold"),
                     fill="blue",
                     anchor="nw")

root.mainloop() 
Hans
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Hans

Du hast natürlich recht. Ich habe die
global-Anweisung aus dem Skript ge-
löscht ohne das Skript abzuspeichern.
Darum hatte es bei mir noch funktioniert.

Besten Dank für deinen Tipp

Gruss wuf :wink:
Take it easy Mates!
Hopsi
User
Beiträge: 18
Registriert: Donnerstag 27. Mai 2004, 21:30

Hi Leute,

Danke, ihr habt mir wirklich weiter geholfen! :wink:

Gruß
Hopsi
Antworten