Seite 1 von 1

Icon mit PIL auf Tkinter.Canvas() ?

Verfasst: Dienstag 22. August 2006, 18:57
von Hannes-Spz
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

Verfasst: Dienstag 22. August 2006, 20:12
von jAN
hi hannes :D
kannst du nicht einfach gifs nehmen oder die icos umwandeln?

erzähl mal was hast du vor?

Verfasst: Dienstag 22. August 2006, 20:26
von Hannes-Spz
: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

Verfasst: Dienstag 22. August 2006, 20:29
von jAN
wenn du mit base64.py die icodaten ausliest, ist das noch lang kein gif oder bmp

Verfasst: Mittwoch 23. August 2006, 14:52
von HWK
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

Verfasst: Mittwoch 23. August 2006, 17:19
von Hannes-Spz
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 )

Verfasst: Mittwoch 23. August 2006, 20:07
von HWK
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

Verfasst: Donnerstag 24. August 2006, 09:47
von Hannes-Spz
oh gott, muss ich bescheuert gewesen sein... :D :D :D
das hab ich natürlich überhaupt nicht bedacht!
tausend und ein "danke"
lg hannes