Hi Leute. Ich lade nacheinander verschiedene wxPanels in ein wxSplitterWindow. Das nur zu nebenbei Info.
Frage: Wie kill ich ein Panel. Ich dachte ich könnte dies mit Destroy() oder besser noch mit DestroyChildren() realisieren. Aber das klappt nicht so wie ichs mir vorstelle. die wxTextCtrl usw. sind immer noch aktiv.
Was sagt ihr dazu?
Greetz 2bock
wxPython: wxPanel killen
Öhm. Ja wie jetzt
Geht's nun, oder lag's nicht daran?
Für alle Fälle mal ein kurzes Beispiel, in dem es funktioniert:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: ISO-8859-1 -*-
from wxPython.wx import *
class DlgTest(wxFrame):
def __init__(self, *args, **kwds):
kwds["style"] = wxDEFAULT_FRAME_STYLE
wxFrame.__init__(self, *args, **kwds)
self.panel = wxPanel( self, wxNewId() )
self.btn = wxButton(self.panel, wxNewId(), "Ausgabe")
self.txtctrl = wxTextCtrl(self.panel, wxNewId() )
sizer_pn = wxBoxSizer( wxHORIZONTAL )
sizer_pn.Add( self.btn, 0, 0, 0 )
sizer_pn.Add( self.txtctrl, 0, 0, 0 )
self.panel.SetAutoLayout(1)
self.panel.SetSizer( sizer_pn )
sizer_pn.Fit( self.panel )
self.panel.Layout()
self.SetTitle("Frametest")
self.__do_layout()
EVT_BUTTON( self, self.btn.GetId(), self.OnBtnAusgabe )
def __do_layout(self):
sizer_1 = wxBoxSizer(wxHORIZONTAL)
sizer_1.Add(self.panel, 0, 0, 0)
self.SetAutoLayout(1)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
sizer_1.SetSizeHints(self)
self.Layout()
self.Centre()
def OnBtnAusgabe(self, event):
print self.panel
print self.btn
print self.txtctrl
self.panel.Destroy()
print self.panel
print self.btn
print self.txtctrl
Danke für Dein Beisipel Christopy.
Nein nein ich hab das schon richtig gemacht. Aber das Problem, warum es bei mir nicht funktioniert, scheint woanders zu liegen. Ich bin jetzt auf der Suche nach dem Problem.
Trotzdem Danke für Deine Antwort.
Jetzt kann ich wenigstens sicher sein, das ich das schon mal richtig gemacht habe.
Greetz from 2bock
Nein nein ich hab das schon richtig gemacht. Aber das Problem, warum es bei mir nicht funktioniert, scheint woanders zu liegen. Ich bin jetzt auf der Suche nach dem Problem.
Trotzdem Danke für Deine Antwort.
Jetzt kann ich wenigstens sicher sein, das ich das schon mal richtig gemacht habe.
Greetz from 2bock
Also ich habe das Problem oder so elegant gelöst. Durch den Befehl DestryChildren(), der von der wxWindow Klasse abgeleitet wird, habe ich direkt von "Parent Window" die entsprechenden Panels gekillt.
Ich hoffe das was ich geschrieben habe war verständlich. Fragen bitte ruhig posten.
Bis dann
Greetz from 2bock
Ich hoffe das was ich geschrieben habe war verständlich. Fragen bitte ruhig posten.
Bis dann
Greetz from 2bock
Frag nicht wieso, aber ich wollte ursprünglich diverse Objekte einzeln killen. Von einzeln Objekt kam ich dann auf dat ganze Panel und hab gar nicht mehr an Children Destroy gedacht.
Warum elegant lösen, wenns auch kompliziert geht.
Warum elegant lösen, wenns auch kompliziert geht.