folgendes Problem stellt sich mir:
Ich habe Variablennamen, die durchnummeriert sind... und würde diese gerne in einer Schleife ansprechen...
Bsp:
Code: Alles auswählen
for x in range(1,5):
variable_+x="irgendein wert"
Code: Alles auswählen
for x in range(1,5):
variable_+x="irgendein wert"
Code: Alles auswählen
schafkopfblatt = [
["7","Herz"],
["8","Herz"],
["9","Herz"],
["Unter","Herz"],
["Ober","Herz"],
["Koenig","Herz"],
["10","Herz"],
["Sau","Herz"],
["7","Schelln"],
["8","Schelln"],
["9","Schelln"],
["Unter","Schelln"],
["Ober","Schelln"],
["Koenig","Schelln"],
["10","Schelln"],
["Sau","Schelln"],
["7","Eichel"],
["8","Eichel"],
["9","Eichel"],
["Unter","Eichel"],
["Ober","Eichel"],
["Koenig","Eichel"],
["10","Eichel"],
["Sau","Eichel"],
["7","Gras"],
["8","Gras"],
["9","Gras"],
["Unter","Gras"],
["Ober","Gras"],
["Koenig","Gras"],
["10","Gras"],
["Sau","Gras"]
]
bild_blatt1_1 = PhotoImage(file="irgendein_bild")
for x in schafkopfblatt:
zahl, farbe = x
spielblatt1_1 = Label(gui,image=bild_blatt1_1)
etc. (weitere 31 Bilder)
spielblatt1_1.pack()
Code: Alles auswählen
for zahl, farbe in schafkopfblatt:
# ...
Code: Alles auswählen
schafkopfblatt = [
["7","Herz","bilder/spielblatt/7_Herz.jpg"],
["8","Herz","bilder/spielblatt/8_Herz.jpg"],
["9","Herz","bilder/spielblatt/9_Herz.jpg"]
]
for zahl,farbe,pfad in schafkopfblatt:
spielblatt1_1 = Label(gui,image=pfad)
spielblatt1_2 = Label(gui,image=pfad)
spielblatt1_3 = Label(gui,image=pfad)
#etc. insgesamt 32 Labels...
spielblatt1_1.pack()
spielblatt1_2.pack()
spielblatt1_3.pack()
#etc. insgesamt dann auch 32 Karten
Nein, es wurde gesagt, dass du statt Variablen durchzunummerieren du Listen verwenden sollst.SchneiderWeisse hat geschrieben:Anstatt diese ganzen Labels hinzuschreiben wurde gesagt, dass ich Listen verwenden soll, aber wie mache ich das?
Code: Alles auswählen
farben = set(('Eichel', 'Gras', 'Herz', 'Schellen'))
werte = set(range(6, 11) + ['A', 'O', 'U'])
kombiniert = set()
for farbe in farben:
for wert in werte:
kombiniert.add((farbe, wert))
def get_blatt(farbe, wert):
return "bilder/spielblatt/%s_%s.jpg" % (wert, farbe)
for item in kombiniert:
print get_blatt(*item)
Code: Alles auswählen
farben = ["Eichel", "Gras", "Herz", "Schelln"]
werte = range(6, 11) + ['Sau', 'Ober', 'Unter']
kombiniert = []
for farbe in farben:
for wert in werte:
kombiniert.append([farbe,wert])
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()
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"
Das wird hier normalerweise jedem gesagt, der Code mit Stern-Importen postet. Such mal nach "Stern-Import". Und guck auf [wiki]Import[/wiki].SchneiderWeisse hat geschrieben:Nein?! Wo wurde mir das empfohlen?!Schon wieder Stern-Importe? Macht es Spaß die gut gemeinten Tipps der Leute hier zu ignorieren?
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()