Code: Alles auswählen
import Tkinter as tk
def geometry(tkgeo):
'''macht aus widthxheightxXxY Fensterkoordinaten'''
x1, y1 = map(int, tkgeo.split('+')[1:])
x2, y2 = map(int, tkgeo.replace('+', 'x').split('x')[:2])
x2 += x1
y2 += y1
return x1, y1, x2, y2
def fenster_erstellen():
top = tk.Toplevel(win)
wingeo = geometry(win.winfo_geometry())
#print len(win.winfo_children())
try:
## prüfen, ob es sich um ein Fenster handelt
win.winfo_children()[-2].geometry('%ix%i+%i+%i' %(300, 100, wingeo[0], wingeo[-1]))
x1, y1, x2, y2 = geometry(win.winfo_children()[-2].winfo_geometry())
top.geometry('%ix%i+%i+%i' %(300, 100, x1, y2))
except AttributeError: ## Button instance has no attribute 'geometry'
top.geometry('%ix%i+%i+%i' %(300, 100, wingeo[0], wingeo[-1]))
win = tk.Tk()
win.geometry('300x100+10+10')
mehr = tk.Button(win, text='Ich will mehr Fenster!', command=fenster_erstellen)
mehr.pack(padx=20, pady=20)
win.mainloop()
Dieses Skript soll (was es teilweise auch tut) Toplevel-Fenster erzeugen, die genau unter dem letzten Fenster liegen.
Das klappt 3 mal ganz gut, doch dann wird nur noch das letzte Fenster verschoben.
Und noch eine zweite Sache: Wie kann ich herausfinden, um was für ein Widget es sich handelt.
Pascal