Code: Alles auswählen
import Tkinter as tk
import tkSimpleDialog
def newtext(ev):
global lb
s = tkSimpleDialog.askstring("Eingabefenster","Neuer Text: ")
if s==None: return
lb.destroy()
lb = tk.Label(root,text=s,wraplength=100)
lb.pack()
lb.update_idletasks() # nötig?
root = tk.Tk()
lb = tk.Label(root,text="Das ist der Starttext",wraplength=100)
lb.pack()
lb.update_idletasks() # nötig?
root.bind("<Button-1>",newtext)
root.geometry("%dx%d+600+400" %(lb.winfo_width(),lb.winfo_height()))
root.update_idletasks() # nötig?
root.mainloop()
Das Problem scheint in der Verwendung der geometry-Methode zu liegen. Ohne diese klappt es (natürlich), dass das Fenster sich an die Menge des eingegebenen Textes anpasst. Aber dann kann ich ja nicht die Position des Frames festlegen. Ich möchte beides: Größenanpassung und - abhängig von der Größe (diese Berechnung fehlt im Codeschnipsel) - die Position auf
dem Bildschirm manuell festlegen.
Natürlich könnte ich destroy() auf root anwenden und das ganze Fenster neu erzeugen, aber ich verstehe nicht, warum es so wie oben dargestelllt, nicht auch geht.
Wäre toll, wenn jemand einen guten Tipp hat!