Framebreite festsetzen

Fragen zu Tkinter.
Antworten
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

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?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Danke :D
Antworten