Noetebook tab erst füllen wenn aktiviert

Fragen zu Tkinter.
Antworten
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Damit mein Interface sich recht fix aufbaut würde ich die Inhalte der einzelnen Tabs meines Tix.Notebooks gerne erst dann füllen wenn der Tab zum ersten Mal aufgerufen wird.

notebook.bind(...)

geht offenbar ins Leere wärend

notebook.nbframe.bind()

die Funktionalität des Umschaltens der Tabs negativ beeinflusst. Kennt jemand eventuell ne elegante Möglichkeit herauszufinden ob ein tab aktiviert wurde?

mit notebook.raise() kann ich zwar ein Tab nach vorne bringen, nützt mir allerdings nix. Und mit notebook.raised() finde ich den Tab heraus, der vorne ist, aber das bringt mir ja nur was wenn ich das in ein bind-callback einbauen kann.

Ich stelle mir da sowas vor:

notebook.bind('<raised-1>', tab1.refresh)
notebook.bind('<raised-2>', tab2.refresh)

....

das wäre toll.
BlackJack

Du kennst das dritte Argument von Widget.bind() und hast das schon ausprobiert?
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Jetzt kenne ich das, super Sache das. Danke.
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Klappt leider nicht so wie ich mir das vorstelle.

Ich kann nun zwar ohne weiteres einen Event an das notebook frame anhängen, jedoch bekomme ich mit notebook.raised() nicht den neuen Zustand zurück, sondern nur den Tab der als letztes aktiv war. Offenbar wird raised erst nach dem event Aufruf aktualisiert.

Irgendeine Idee?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

haggi hat geschrieben:Irgendeine Idee?
Evtl. hilft es, wenn du vor der Abfrage von raised() einmal die update()-Methode aufrufst.

Ansonsten bliebe ja immer noch die Möglichkeit, die Information über den aktiven Tab in einer Variablen selbst zu verwalten, die jeweils beim Aufruf des Event-Handlers aktualisiert wird.
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Update() hatte ich schon probiert, hilft leider nix.

Das Problem an der Sache ist dass ich erkennen muss ob der Tab aktiv ist oder nicht. Alle events oder bindings die ich erzeugen konnte riefen immer nur das notebook.nbframe auf.
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Ich konnte das Problem lösen indem ich einfach ein <Configure> binding für den jeweiligen Tab erzeugt habe. Wenn der Tab dann noch nicht gefüllt ist wird das dann gemacht.
Antworten