2009-04-05 10 views
3

Ich experimentiere mit wxPython ändern,den Titel eines Tab in wx.Notebook

Ich habe eine Oberfläche mit Registerkarten (Notebook) und jeder Reiter ist im Grunde eine Dateiliste (ja, ich versuche zu machen ein Dateimanager)

die Dateiliste erbt von wx.ListCtrl, und die Oberfläche mit Registerkarten erbt von wx.Notebook

ich fange gerade .. und ich hatte es so einen Doppelklick auf einen Ordner, cD wird in diesen Ordner, aber ich möchte auch den Titel der Registerkarte ändern.

Wie mache ich das?

Ich habe das Objekt, das die Dateiliste und den Titel ich es einstellen möchten repräsentiert zu,

[EDITNotebook.SetPageText() eine Reihe nimmt, so kann ich nicht auf die Registerkarte Objekt direkt an ihn übergeben ]

meine aktuelle Ansatz ist durch die Registerkarten wiedergegeben, bis einer von ihnen mein Tab passt:

for tab_id in range(self.GetPageCount()): 
     if self.GetPage(tab_id) == tab: 
      self.SetPageText(tab_id, title) 
      break 

Dies scheint allerdings eher naiv, ist nicht ther e ein schlauer Ansatz?

Antwort

-1

Da .GetPage ein wx.Window zurückgibt, denke ich tab.Label = title sollte funktionieren.

+0

gerade versucht es, hat nicht funktioniert – hasen

0

Ich denke, so etwas wie dies zu tun hilft:


notebook.get_tab_label(notebook.get_nth_page(your_page_number)).set_text("Your text") 

Wenn Sie einen Verweis auf die aktuellen Registerkarte haben wollen immer, müssen Sie die „switch-Seite“ Signal, schließen und die Seite in einer Variablen speichern .

+0

Wie ist das besser als notebook.SetPageText (Seitennummer, "Titel")? Außerdem müssen Sie zuerst die "Nummer" finden. – hasen

2

Ich weiß nicht wxPython, aber ich nehme an, dass es alle Methoden der C++ - Klassen umschließt.

Es ist wxNotebook :: GetSelection() die wxNOT _ GEFUNDEN oder den Index der ausgewählten Seite zurückgibt, die dann verwendet werden können wxNotebook :: SetPageText() zu nennen.

Oder nutzen wxNotebook :: GetPage() mit diesem Index zu überprüfen, ob es zu Tab gleich ist.

+0

Ich möchte nicht annehmen, dass nur die ausgewählte Seite das Verzeichnis wechseln kann. – hasen

+2

Ich bin mir nicht sicher, wie Sie auf eine Dateiliste doppelklicken würden, ohne dass diese Seite im Notizbuch aktiv ist. Aber wenn Sie es brauchen, um mit allen Seiten zu arbeiten, bleiben Sie einfach bei dem Code in Ihrer Frage, es ist nicht schlecht oder naiv IMO. – mghie