Seite 1 von 2
Verfasst: Samstag 8. Dezember 2007, 17:30
von nemomuk
Code: Alles auswählen
from Tkinter import *
import random
gui = Tk()
farben = ["Eichel", "Gras", "Herz", "Schelln"]
werte = range(6, 11) + ["Sau", "Ober", "Unter"]
kombiniert = []
for farbe in farben:
for wert in werte:
kombiniert.append([wert, farbe])
def mischen():
random.shuffle(kombiniert)
karten = []
for wert,farbe in kombiniert:
bild = PhotoImage(file="bilder/spielblatt/%s_%s.jpg" %(wert, farbe))
karten.append(Label(gui,image=bild))
return karten
karten = mischen()
for x in karten:
x.pack()
gui.mainloop()
Ich frage mich nur, warum dann das hier jetzt nicht geht...
er sagt mir folgendes:
Code: Alles auswählen
Traceback (most recent call last):
File "D:\Dokumente und Einstellungen\Besitzer\Desktop\Python\schafkopf\index.py", line 20, in <module>
karten = mischen()
File "D:\Dokumente und Einstellungen\Besitzer\Desktop\Python\schafkopf\index.py", line 16, in mischen
bild = PhotoImage(file="bilder/spielblatt/%s_%s.jpg" %(wert, farbe))
File "D:\Programme\Python\lib\lib-tk\Tkinter.py", line 3270, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "D:\Programme\Python\lib\lib-tk\Tkinter.py", line 3226, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
TclError: couldn't recognize data in image file "bilder/spielblatt/Sau_Gras.jpg"
Die Bilder existieren definitiv...
Verfasst: Samstag 8. Dezember 2007, 17:38
von Leonidas
Schon wieder Stern-Importe? Macht es Spaß die gut gemeinten Tipps der Leute hier zu ignorieren?
PhotoImage
unterstützt keine JPEGs (first Google-hit btw), dazu brauchst du die PIL.
Verfasst: Samstag 8. Dezember 2007, 17:56
von nemomuk
Schon wieder Stern-Importe? Macht es Spaß die gut gemeinten Tipps der Leute hier zu ignorieren?
Nein?! Wo wurde mir das empfohlen?!
Danke!
Verfasst: Samstag 8. Dezember 2007, 18:00
von Leonidas
SchneiderWeisse hat geschrieben:Schon wieder Stern-Importe? Macht es Spaß die gut gemeinten Tipps der Leute hier zu ignorieren?
Nein?! Wo wurde mir das empfohlen?!
Das wird hier normalerweise jedem gesagt, der Code mit Stern-Importen postet. Such mal nach "Stern-Import". Und guck auf [wiki]Import[/wiki].
Edit: Hab jetzt geschaut, du hast scheinbar echt noch kein Programm gepostet, welches Stern-Importe nutzt.
Verfasst: Samstag 8. Dezember 2007, 18:45
von nemomuk
ich habe jetzt versucht das Bild mit PIL zu öffnen und in Tkinter weiter zu verwenden...
Code: Alles auswählen
import Tkinter as tk
import Image
import ImageTk
gui = tk.Tk()
bild1 = Image.open("bilder/spielblatt/7_Herz.jpg")
bild = ImageTk.PhotoImage(bild1)
label = tk.Label(gui,image=bild)
label.tk.pack()
gui.mainloop()
Er sagt mir was von Attribute Error: pack
//Hab ich jetzt richtig importiert?^^
Verfasst: Samstag 8. Dezember 2007, 22:43
von Jan-Peer
label ist bereits ein Objekt vom Typ tk.Label - insofern brauchst du `tk` bei `pack` nicht mehr anzugeben.
Verfasst: Sonntag 9. Dezember 2007, 11:31
von nemomuk
Danke!
Habe jetzt versucht das ganze mit Listen zu machen, bekomme aber bei folgendem Script immer eine Fehlermeldung...:
Code: Alles auswählen
import Tkinter as tk
import Image
import random
gui = tk.Tk()
farben = ["Eichel", "Gras", "Herz", "Schelln"]
werte = range(7, 11) + ["Sau", "Ober", "Unter"]
kombiniert = []
for farbe in farben:
for wert in werte:
kombiniert.append([wert, farbe])
random.shuffle(kombiniert)
karten = []
bilder = []
for wert,farbe in kombiniert:
bild_konvert = Image.open("bilder/spielblatt/%s_%s.jpg" %(wert, farbe))
bilder.append(tk.PhotoImage(bild_konvert))
for bild in bilder:
karten.append(tk.Label(gui,image=bild))
for x in karten:
x.pack()
gui.mainloop()
Code: Alles auswählen
Traceback (most recent call last):
File "D:\Dokumente und Einstellungen\Besitzer\Desktop\Python\schafkopf\index.py", line 21, in <module>
karten.append(tk.Label(gui,image=bild))
File "D:\Programme\Python\lib\lib-tk\Tkinter.py", line 2464, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "D:\Programme\Python\lib\lib-tk\Tkinter.py", line 1930, in __init__
(widgetName, self._w) + extra + self._options(cnf))
TypeError: __str__ returned non-string (type instance)
Auch nach längerer Suche, konnte ich das Problem nicht lösen - hat von euch jemand eine Ahnung?
Verfasst: Sonntag 9. Dezember 2007, 11:44
von Leonidas
Guck doch einfach mal in
effbots Beispiel, dort ist doch genau beschrieben, dass du, nachdem du das `Image` geladen hast, es noch in ein `ImageTk` wandeln musst.
Verfasst: Sonntag 9. Dezember 2007, 11:50
von nemomuk
Danke...
Ich bin so dumm...