2009-07-13 7 views
2

Wie kann ein Notebook im laufenden Betrieb aktualisiert werden?Hinzufügen/Entfernen von Notebook-Seiten in PyGTK/GTK im laufenden Betrieb

Ich habe eine Anwendung, die verschiedene Anzahl von Seiten gemäß den Daten im zugrunde liegenden Modell haben soll. Um das Aussehen des Notebooks zu synchronisieren, möchte ich es jedes Mal aktualisieren , wenn eine Zeile hinzugefügt/aus dem Modell gelöscht wird.

Ich habe dies versucht:

... 
    def get_pagebox(self, label) 
     ... 
     return pagebox 
    def _reinit(self): 
     for child in self.notebook.get_children(): 
      self.notebook.remove(child) 
     for label in self.get_labels(): 
      self.notebook.append(self.get_pagebox(label), label) 
     self.notebook.queue_draw_area(0,0,-1,-1) 
    ... 

Es entfernt die alten Seiten, aber nicht neue hängen. Was könnte das Problem sein und wie denkst du könnte dies getan werden?

+0

'notebook'-Tag als Teil des [2012 cleanup] entfernt (http://meta.stackexchange.com/questions/128315/the-great-stack-overflow-tag-question-cleanup-of-2012). –

Antwort

2

Das sieht gut aus. Haben Sie versucht, eine explizite show() auf den Widgets nach dem Hinzufügen von ihnen zu tun?

4

Sie sollten einfach show_all() auf dem Notebook aufrufen, nachdem Sie die neuen Seiten hinzugefügt haben. Alle von GTK + erstellten Widgets werden zunächst ausgeblendet. Der Anruf queue_draw_area sollte nicht notwendig sein.