Seite 2 von 2

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...