Oder einfacher initialisieren (siehe unten Zeile 10)BlackJack hat geschrieben:Zeile 10 ist reichlich kompliziert und überflüssig. Die verschachtelte Liste würde ich einfach in der Schleife mit aufbauen.
Aber das verursacht sicher die Verzögerung nicht ...
Da ich die Verzögerung beim Programmstart nicht reproduzieren kann, mal zwei Vorschläge ins Blaue hinein:
Zum einen könntest du versuchen festzustellen, an welcher Stelle das Problem liegt, indem du ein paar Zeitmessungen einschiebst. Dann könnte z.B. so aussehen:
Code: Alles auswählen
import time, platform
import Tkinter as tk
timer = time.time if platform.system() == "Linux" else time.clock
class MyApp(object):
def __init__(self, myParent):
t0 = timer()
self.myParent = myParent
self.buttonlist = [[None]*25 for k in xrange(25)]
print timer()-t0
for i in xrange(25):
for o in xrange(25):
self.buttonlist[i][o] = tk.Button(self.myParent, width=2, height=1)
print timer()-t0
for i in xrange(25):
for o in xrange(25):
self.buttonlist[i][o].grid(row=i, column=o)
print timer()-t0
root = tk.Tk()
myapp = MyApp(root)
root.mainloop()
Zweite Idee: Vielleicht liegt es am grid-Manager, obwohl das mal ein Aufbau ist, wo grid besser passt als pack. Versuch es doch mal mittels pack(), ob das irgendeinen Unterschied macht:
Code: Alles auswählen
import Tkinter as tk
root = tk.Tk()
for y in xrange(25):
row = tk.Frame(root)
for x in xrange(25):
tk.Button(row, width=2, height=1).pack(side="left")
row.pack()
root.mainloop()