letztes Listenelement wird nicht richtig dargestellt
Verfasst: Dienstag 30. März 2021, 22:40
Hallo,
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:
Vielen Dank schonmal für eure Hinweise.
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()