Noetebook tab erst füllen wenn aktiviert

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

Noetebook tab erst füllen wenn aktiviert

Beitragvon haggi » Montag 25. August 2008, 09:46

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

Beitragvon BlackJack » Montag 25. August 2008, 10:00

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:

Beitragvon haggi » Montag 25. August 2008, 10:52

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

Beitragvon haggi » Montag 25. August 2008, 12:03

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

Beitragvon numerix » Montag 25. August 2008, 14:17

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:

Beitragvon haggi » Montag 25. August 2008, 14:37

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:

Beitragvon haggi » Dienstag 26. August 2008, 12:40

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder