Ich sitze immer noch an dem selben Programm wie vor einigen Tagen, habe jetzt aber mal wieder ein völlig neues Problem.
In meinem Programm werden quasi ständig widgets hinzugefügt und entfernt (kein problem soweit) und aber auch manchmal mitten innerhalb der Hierarchie ersetzt.
Für letzteres muss ich ein neues Widget erstellen, die Kinder des alten Widget an das neue anhängen und das alte anschließend löschen.
Das Problem liegt bei mir jetzt an dem mittleren Schritt. Ich würde wie gesagt gerne den master/parent eines widgets ändern ohne es zu zerstören und neu zu erstellen, was in meinem Programm eben zu einigem ungewollten Overhead führen könnte, weil es wirklich sehr oft passieren kann.
Ich habe jetzt aber den leisen Verdacht, dass das garnicht sauber zu bewältigen ist, weil Tk ja diese feste widget-benennung hat und man den namen auch nicht nachträglich ändern kann und es ja auch keine "append" oder "remove" funktionen gibt um widgets zwischen verschiedenen parents hin und her zu jonglieren.
Hier ein (nicht funktionierndes) Beispiel dessen was ich hinbekommen will :
Code: Alles auswählen
from Tkinter import *
t = Tk()
f = Frame(t)
b = Button(f,text='Test')
b.pack()
f.pack()
#Frame f soll jetzt ersetzt werden durch neuen frame f2
f2 = Frame(t)
b.pack_forget()a
b.master = f2
f.children = {}
f.destroy()
b.pack()
f2.pack()
t.mainloop()
Wie gesagt : Eine mögliche Lösung des Problems ist es einfach das widget zu zerstören und an der Stelle ein neues widget einzufügen, dessen Kindelemente dann auch alle noch einmal neu erstellt würden. Ich möchte nur wissen ob es anders geht, so dass ich mir diesen Rechenaufwand sparen könnte. (Das neu-erstellen von Widgets ist deshalb bei mir relativ "teuer" weil jedesmal Dateien von der Festplatte gelesen werden müssen, die Informationen über das Widget enthalten.)
freundlche Grüße und danke schonmal fürs Anschauen
Prophet