Also global gilt es, bei etwas größeren Programmen, zu vermeiden.
Sollte möglich sein, danke.
Hab grad bisschen bei Thinking in Tkinter herumgelesen und auch verschiedenes ausprobiert.
Dabei haben sich mir wieder ein paar Fragen gestellt:
Erstens:
Warum definiert der Autor, von Thinking in Tkinter, die
root = Tk() und die
mainloop-Anweisung immer außerhalb der Klasse und übergibt
root dann als Parameter?
Hat das einen Vorteil gegenüber dem, wenn man auch diese Anweisungen mit in die Klasse packt? Bin verunsichert, da ich bei anderen "Anleitungen" diese immer in der Klasse definiert gefunden habe.
Zweitens:
Funktioniert beides.
Warum stellt Python zwei Möglichkeiten zur verfügung? Ist das nicht sinnlos?
Oder sollte man eine der beiden eh nicht verwenden, da sie in späteren Versionen von Python nicht mehr vorhanden sein wird?
Drittens:
Habe im irgendwo gelesen, dass man Längeneinheiten bei Tkinter auch in Zentimeter, Millimeter und Inch angeben kann.
Das funktioniert bei Canvas auch ausgezeichnet:
Code: Alles auswählen
import Tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width='10c', height='10c')
canvas.pack()
root.mainloop()
Wenn ich das ganze allerdings bei einem Button versuche funktioniert es nicht, obwohl es, laut Beschreibung, für alle Widgets von Tkinter funktionieren sollte:
Code: Alles auswählen
button = tk.Button(root, width='10c', height='10c')
button.pack()
Viertens und Letztens:
Warum braucht mein Computer so lange um die Buttons zu plazieren?
Wenn man sich Minesweeper anschaut funktioniert das ja erheblich schneller
.
Also was mach ich falsch?
Code:
Code: Alles auswählen
import Tkinter as tk
class MyApp(object):
def __init__(self, myParent):
self.myParent=myParent
myContainer1 = tk.Frame(self.myParent)
myContainer1.pack()
self.button = self.buttonDict(width=25)
for i in xrange(25):
for o in xrange(25):
self.button[i][o] = tk.Button(myContainer1, width=2, height=1)
self.button[i][o].grid(row=i, column=o)
def buttonDict(self,width):
button = []
for i in xrange(1,width*width,width):
button += [[['button%u' %(i+dummy)] for dummy in xrange(width)]]
return button
root = tk.Tk()
myapp = MyApp(root)
root.mainloop()