Seite 1 von 1

Framebreite festsetzen

Verfasst: Freitag 2. April 2010, 22:54
von Pascal
Hallo

hier mal folgendes Beispiel:

Code: Alles auswählen

import Tkinter as tk


def text_hinzu():

    label.config(text=label.cget('text')+'#')
    if len(label.cget('text')) < 100:
        win.after(100, text_hinzu)
    else:
        win.after(100, text_weg)
       

def text_weg():

    label.config(text=label.cget('text')[:-1])
    if len(label.cget('text')) > 1:
        win.after(100, text_weg)
    else:
        win.after(100, text_hinzu)
        

win = tk.Tk()


frame = tk.Frame(win, width=160)
frame.pack()

label = tk.Label(frame, text='#')
label.pack()


win.after(100, text_hinzu)

win.mainloop()
Wie man sieht, verändert sich die Breite des Frames, weil sich die Breite des Labels verändert.
Meine Frage: Wie kann ich die Breite festsetzen, sodass der Frame nicht größer oder kleiner wird?

Verfasst: Samstag 3. April 2010, 06:50
von wuf
Hallo Pascal

Code: Alles auswählen

frame.propagate(False)
ist das Lösungswort. Dabei ist zu achten, dass bei beiden Frame-Optionen 'width' und 'height' ein Wert zugewiesen wird.

Hier das modifizierte Skript:

Code: Alles auswählen

import Tkinter as tk


def text_hinzu():

    label.config(text=label.cget('text')+'#')
    if len(label.cget('text')) < 100:
        win.after(100, text_hinzu)
    else:
        win.after(100, text_weg)


def text_weg():

    label.config(text=label.cget('text')[:-1])
    if len(label.cget('text')) > 1:
        win.after(100, text_weg)
    else:
        win.after(100, text_hinzu)


win = tk.Tk()


frame = tk.Frame(win, width=300, height=40)
frame.pack()
frame.propagate(False)

label = tk.Label(frame, text='#')
label.pack()


win.after(100, text_hinzu)

win.mainloop() 
Gruß wuf :wink:

Verfasst: Samstag 3. April 2010, 10:42
von Pascal
Danke :D