Icon mit PIL auf Tkinter.Canvas() ?

Fragen zu Tkinter.
Antworten
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

Hallo!
Hat jemand eine Ahnung, wie man ein Icon auf ein Canvas bringen kann?
Ich bin schon knapp am verzweifeln, da mit Tkinter und (Bitmap|Photo)Image( file = "..." ) nichts klappt, was als Endung ein *.ico hat.
(Wie) Geht das mit der PIL?
liebe Grüße und vielen Dank im voraus
Hannes
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

hi hannes :D
kannst du nicht einfach gifs nehmen oder die icos umwandeln?

erzähl mal was hast du vor?
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

:D :D :D
eigentlich wollt ich nur mal rumprobieren und hab mich dann nat. reingesteigert...
ich wollte nen bissel dnd auf nem canvas spielen, wobei *.ico-s leider nur zur verfügung stehen :?
kann man denn nicht die daten/bildpunkte des icons auslesen und bei Tkinter.BitmapImage() als "data"-arg angeben?
jedenfalls nicht so einfach, da nur die selbe fehlermeldung, dass das format nicht unterstützt werden würde bei rauskommt...

lg hannes
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

wenn du mit base64.py die icodaten ausliest, ist das noch lang kein gif oder bmp
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Es müßte mit wirklich mit PIL funktionieren:

Code: Alles auswählen

import Image, ImageTk
img = ImageTk.PhotoImage(Image.open('Test.ico'))
img ist dann ein in Tkinter verwendbares Image.
MfG
HWK
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

dankeschön erstmal, aber bei folgendem code und fehlermeldung frage ich mich ...

Code: Alles auswählen

from Tkinter import *
from PIL import Image, ImageTk
root = Tk()
cv = Canvas(root)
image = Image.open("E:\\ICONS\\5spots_ico_new.ico") 
icon = ImageTk.PhotoImage(image)
cv.create_image( 20, 20, icon, tag = "bild")
cv.pack()
root.mainloop()

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Dokumente und Einstellungen\04jostoy\Desktop\studium_move_icon.py", line 7, in -toplevel-
    cv.create_image( 20, 20, icon, tag = "bild")
  File "C:\Python24\lib\lib-tk\Tkinter.py", line 2086, in create_image
    return self._create('image', args, kw)
  File "C:\Python24\lib\lib-tk\Tkinter.py", line 2075, in _create
    return getint(self.tk.call(
TclError: unknown option "pyimage1"
:( ... bin jetzt ich oder der rechner so dumm??
( win xp prof py24 / py25 )
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Sorry, aber das erstere scheint richtig zu sein. Probier mal:

Code: Alles auswählen

cv.create_image( 20, 20, image=icon, tag='bild')
MfG
HWK
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

oh gott, muss ich bescheuert gewesen sein... :D :D :D
das hab ich natürlich überhaupt nicht bedacht!
tausend und ein "danke"
lg hannes
Antworten