ich habe diesmal zur Übung ein Programm entwickelt, dass Farben in einer Liste speichert und diese dann in einem Label der Reihenfolge nach wieder ausgibt. Funktioniert auch soweit -
Nun wollte ich, dass nach der Wiedergabe der Farben jeweils ein neues Listenelement dazukommt - nur was sehr komisch ist - das jeweils letzte Listenelement wird dann nicht mehr richtig dargestellt - das Label zeigt die entsprechende Farbe nicht mehr an, sondern nur die, die neu dazukommt.
Ich hoffe, dass ich das irgendwie einigermaßen klar dargestellt habe.
Hier mal der Code:
Code: Alles auswählen
import tkinter as tk
import random
import time
class Programm:
def __init__(self):
self.root =tk.Tk()
self.zufall = 0
self.counter = 0
self.memorizer = []
self.box = tk.Label(self.root, bg="white" ,width=20,height=20)
self.box.grid(row=0,column=0,columnspan=3)
self.hitme = tk.Button(self.root, text = "start", command=self.spielen)
self.hitme.grid(row=1,column=1)
self.abfr = tk.Button(self.root, text="abspielen",command=lambda: self.abfragen())
self.abfr.grid(row=1,column=2)
def spielen(self):
if len(self.memorizer)>0:
print (self.memorizer)
self.zufall = random.randint(1,3)
if self.zufall == 1:
self.box["bg"] = "red"
self.memorizer.append("rot")
elif self.zufall == 2:
self.box["bg"] = "blue"
self.memorizer.append("blau")
else:
self.box["bg"] = "green"
self.memorizer.append("gruen")
def abfragen(self):
#self.box["bg"] = "white"
print (self.counter, "Zähler")
print ((len(self.memorizer)-1), "Laenge Liste um eins verringert")
if self.counter <= len(self.memorizer)-1:
print (self.memorizer)
#for self.counter in range(0, len(self.memorizer)):
#print (self.memorizer[self.counter])
if (self.memorizer[self.counter]) == "rot":
self.box["bg"] = "red"
elif (self.memorizer[self.counter]) == "blau":
self.box["bg"] = "blue"
else:
self.box["bg"] = "green"
self.counter += 1
if self.counter == len(self.memorizer):
self.zufall = random.randint(1,3)
if self.zufall == 1:
self.box["bg"] = "red"
self.memorizer.append("rot")
elif self.zufall == 2:
self.box["bg"] = "blue"
self.memorizer.append("blau")
else:
self.box["bg"] = "green"
self.memorizer.append("gruen")
print ("neuer Eintrag erfolgt")
self.counter = 0
return
self.box.after(3000,self.abfragen)
def hinzufuegen(self):
s
def main():
programm = Programm()
programm.root.mainloop()
#Hauptprogramm
if __name__ == '__main__':
main()