um das Verhalten der Methode wm_geometry() aus dem Modul Tkinter unter Windows XP zu erkunden habe ich das folgende Testprogramm geschrieben:
Code: Alles auswählen
from Tkinter import *
class GeometryTest:
def __init__(self):
self.fenster = Tk()
self.fenster.wm_title(" GeometryTest")
self.lab_0_0 = Label(self.fenster, text = "Label 0.0", font = ("Arial", 36, "bold"))
self.lab_0_0.grid(row = 0, column = 0, sticky = NW, pady = 10, padx = 10)
self.geometriedaten(0, 0)
self.lab_0_1 = Label(self.fenster, text = "Label 0.1", font = ("Arial", 36, "bold"))
self.lab_0_1.grid(row = 0, column = 1, sticky = NW, pady = 10, padx = 10)
self.geometriedaten(0, 1)
self.lab_1_0 = Label(self.fenster, text = "Label 1.0", font = ("Arial", 36, "bold"))
self.lab_1_0.grid(row = 1, column = 0, sticky = NW, pady = 10, padx = 10)
self.geometriedaten(1, 0)
self.lab_1_1 = Label(self.fenster, text = "Label 1.1", font = ("Arial", 36, "bold"))
self.lab_1_1.grid(row = 1, column = 1, sticky = NW, pady = 10, padx = 10)
self.geometriedaten(0, 0)
self.lab_2_0 = Label(self.fenster, text = "Label 2.0", font = ("Arial", 36, "bold"))
self.lab_2_0.grid(row = 2, column = 0, sticky = NW, pady = 10, padx = 10)
self.geometriedaten(2, 0)
self.lab_2_0 = Label(self.fenster, text = "Label 2.1", font = ("Arial", 36, "bold"))
self.lab_2_0.grid(row = 2, column = 1, sticky = NW, pady = 10, padx = 10)
self.geometriedaten(2, 1)
self.fenster.protocol("WM_DELETE_WINDOW", self.alles_schliessen)
self.fenster.mainloop()
def geometriedaten(self, einr, einc):
zeichenreihe = self.fenster.wm_geometry()
print "Label", einr, ".", einc, "eingebaut! Geometriedaten: ", zeichenreihe
def alles_schliessen(self):
self.fenster.quit()
self.fenster.destroy()
GeometryTest()
Label 0 . 0 eingebaut! Geometriedaten: 1x1+0+0
Label 0 . 1 eingebaut! Geometriedaten: 1x1+0+0
Label 1 . 0 eingebaut! Geometriedaten: 1x1+0+0
Label 0 . 0 eingebaut! Geometriedaten: 1x1+0+0
Label 2 . 0 eingebaut! Geometriedaten: 1x1+0+0
Label 2 . 1 eingebaut! Geometriedaten: 1x1+0+0
Wie kann es denn das geben? Das Fenster wird in korrekter Größe angezeigt. Die Funktion wm_geometry() liefert allerdings nur Nonsens. (Ich habe geprüft, dass grid_propagate() und resizable() die korrekten Werte liefern.) Also, was mache ich falsch? Oder liegts am Ende an Windows?
Data