In Canvas die Schriftgröße ändern?

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

In Canvas die Schriftgröße ändern?

Beitragvon Hopsi » Freitag 4. Juni 2004, 12:46

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
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 4. Juni 2004, 12:52

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

Beitragvon Hopsi » Samstag 5. Juni 2004, 20:40

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: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Samstag 5. Juni 2004, 22:21

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: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Samstag 5. Juni 2004, 22:54

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!
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Samstag 5. Juni 2004, 22:56

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: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Sonntag 6. Juni 2004, 06:27

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!
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Beitragvon hans » Sonntag 6. Juni 2004, 12:35

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: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Sonntag 6. Juni 2004, 17:05

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

Schriftgröße in Python

Beitragvon Hopsi » Mittwoch 16. Juni 2004, 13:15

Hi Leute,

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

Gruß
Hopsi

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder