Ich habe ein Programm geschrieben welches 16x16 Button verwalten soll.
Mein Problem: Ich muss die Konfiguration der Button z.B. Hintergrundfarbe während der Laufzeit ändern.
Ich habe eine Lösung erarbeitet (auch dank diesem Forum) doch nimmt der Speicherbedarf des Programms bei jeder Aktualisierung der Button zu.
Aber hier erstmal ein bisschen Code:
Buttongenerierung:
Code: Alles auswählen
def createWidgets(self):
if self.y< 1 or self.x<1:
return 0
for i in range( self.y):
for j in range( self.x ):
but = tk.Button(self,
text = " ",
command = lambda x=j,y=i :
self.returnID(x,y))
but.grid(row=i, column = j)
self.b.append( but )
self.L.append(self.b)
Jetzt möchte ich die Button "updaten"
Code: Alles auswählen
def updateWidgets(self,x,y):
ui = x + (y*16)
tk.Grid.grid_remove(self.b[ui])
exchangeValue = returnArray(x, y)
if exchangeValue == 0:
but = tk.Button(self,
text = " ",
command = lambda x=x,y=y :
self.returnID(x,y))
self.b[ui] = but
self.L[ui] = self.b
but.grid(row = y, column = x)
savetoarray(x, y, 0)
else:
but = tk.Button(self,
bg="red",
text = " ",
command = lambda x=x,y=y :
self.returnID(x,y))
self.b[ui] = but
self.L[ui] = self.b
but.grid(row = y, column = x)
savetoarray(x, y, 1)
Es klappt zwar, aber wenn ich alle 256 Button "update" frisst mein Programm direkt ca. 1Mb mehr Arbeitsspeicher und wird dazu noch langsamer.
Mache ich da irgendwas Falsch? Kann ich auf einen in einer Schleife erstellten Button überhaupt so zugreifen?
Oder gibt es eine andere Möglichkeit die Buttons neu zu konfigurieren.
(Ich möchte nicht alle Button selber von Hand erstellen)
danke im Voraus