FoldPanelBar: deleting panelitems

Plattformunabhängige GUIs mit wxWidgets.
Antworten
gras78ix
User
Beiträge: 9
Registriert: Samstag 4. August 2007, 11:35

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 ?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
gras78ix
User
Beiträge: 9
Registriert: Samstag 4. August 2007, 11:35

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
gras78ix
User
Beiträge: 9
Registriert: Samstag 4. August 2007, 11:35

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.
Antworten