Seite 1 von 1

Noetebook tab erst füllen wenn aktiviert

Verfasst: Montag 25. August 2008, 09:46
von haggi
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.

Verfasst: Montag 25. August 2008, 10:00
von BlackJack
Du kennst das dritte Argument von Widget.bind() und hast das schon ausprobiert?

Verfasst: Montag 25. August 2008, 10:52
von haggi
Jetzt kenne ich das, super Sache das. Danke.

Verfasst: Montag 25. August 2008, 12:03
von haggi
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?

Verfasst: Montag 25. August 2008, 14:17
von numerix
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.

Verfasst: Montag 25. August 2008, 14:37
von haggi
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.

Verfasst: Dienstag 26. August 2008, 12:40
von haggi
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.