Seite 1 von 1

FoldPanelBar: deleting panelitems

Verfasst: Donnerstag 3. Januar 2008, 13:21
von gras78ix
Hi,
I want to use the FoldPanelBar dynamically, so I also have to delete the panelitems. But I can not found any function like panelBar.DeleteFoldPanel(...) - only an AddFoldPanel(...);
I tried to use the Close() function for the panelitem but that doesn't work.

Code: Alles auswählen

panel = panelBar.GetFoldPanel(0)
panel.Close()
Can anyone give me a hint ?

Verfasst: Donnerstag 3. Januar 2008, 15:44
von CM
Hoi,

as far as I understand the docs this is not possible, yet: http://www.wxpython.org/docs/api/wx.lib ... odule.html
Someone correct me, if I'm wrong!

Anyway, this is a German speaking forum. You might want to consider subscribing the wxpython mailing list. Perhaps people there can help. Apart from the contact with native English speakers, the advantage certainly is the direct access to developers - though I have to admit that some folks here are pretty good with wxpython ;-).

Cheers
Christian

Danke - suche nach nem Workaround

Verfasst: Donnerstag 3. Januar 2008, 15:58
von gras78ix
ok - das mit ...forum.de und deutsch leuchtet mir ein.

Schade, das mit dem dynamischen erstellen scheint eine FoldPanelBar tatsächlich zu überfordern.

Werde mal versuchen, FoldPanelBar und alle ihre Panel zu löschen und jedes mal nach Bedarf komplett neu zu erstellen -
im ersten Versuch hat die Lösung auch schon geklappt - nur sind die TextCtrl-Elemente auf einem FolPanelWindow nach einem Neuzeichnen total verkorkst

Verfasst: Donnerstag 3. Januar 2008, 16:35
von CM
Warum schreibst Du Englisch? Habe mir gerade andere Einträge von Dir angesehen: Du hast doch vorher schon Deutsch hier im Forum geschrieben.

Bei Deinem Ansatz solltest Du allerdings aufpassen, das die einzelnen Panels nicht zuviel Kram enthalten: Sonst kann die App u. U. langsam werden.

Gruß,
Christian

Workaournd: alles zerstören, dann neu aufbauen

Verfasst: Donnerstag 3. Januar 2008, 19:36
von gras78ix
Hallo Leute - danke für die Hinweise:
habe das Problem nun mit nem Workaround gelöst:
Idee: komplette FoldPanelBar zerstören und bei Beidarf komplett neu aufbauen
geg: eine Funktion configFoldPanel(...) die FoldPanelItems und alle zugehörigen Windows kreiert, und eine clear() Funktion, die alles bestehende vernichtet und eine neue leere FoldPanelBar erzeugt.

1) configFoldPanel(...) hat dann als ersten Aufruf clear()
2) clear sieht dann in etwa so aus:

Code: Alles auswählen

#zuerst zerstören
if self.m_FoldPanelBar is not None:
            sizer.Remove(self.m_FoldPanelBar)
            self.m_FoldPanelBar.Destroy() 
self.m_FoldPanelBar = None
self.m_Window.Refresh()
#dann eine neue leere panelbar erzeugen
self.m_FoldPanelBar = nsFPB.FoldPanelBar(self.m_Window, -1, wx.DefaultPosition, wx.Size(-1, -1), nsFPB.FPB_DEFAULT_STYLE)
sizer.Add(self.m_FoldPanelBar, 0, wx.EXPAND | wx.ALL | wx.GROW, 0)
        sizer.Layout()
self.m_FoldPanelBar.Destroy() reicht vollkommen aus, da die panelitems und windows alles Kinder und Kindeskinder sind - die werden alle automatisch zerstört.