Hab das problem das ich bei meiner MDI application wissen muss wieviele wxMDIChildframes offen sind und habe bis jetzt noch keine methode gefunden, würde auch schon reichen wenn ich wüsste ob überhaupt noch ein childframe existiert
mit hochzählen finde ich ein bisschen unschön da muss es doch was besseres geben oder ?
Wie bekomm ich die wxMDIChildFrame anzahl herraus ?
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Sneaker,
ich kenn mich mit wx leider ned soo aus. Aber wenn keine spezielle Methode für die Anzahl der Childframes existiert, und die geöffneten Childframes nicht in einer Liste oder was ähnlichem eingetragen sind, wirst Du ums hochzählen nicht rumkommen.
Wenns nur darum geht, ob überhaupt noch ein Childframe existiert, ist das hochzählen ja beim ersten schon wieder beendet.
Gruß
Dookie
ich kenn mich mit wx leider ned soo aus. Aber wenn keine spezielle Methode für die Anzahl der Childframes existiert, und die geöffneten Childframes nicht in einer Liste oder was ähnlichem eingetragen sind, wirst Du ums hochzählen nicht rumkommen.
Wenns nur darum geht, ob überhaupt noch ein Childframe existiert, ist das hochzählen ja beim ersten schon wieder beendet.
Gruß
Dookie
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Da gibts wohl EVT_SET_FOCUS und EVT_KILL_FOCUS
siehe auch:
http://www.wxwindows.org/manuals/2.4.2/ ... ngoverview
Gruß
Dookie
siehe auch:
http://www.wxwindows.org/manuals/2.4.2/ ... ngoverview
Gruß
Dookie
Evt. ginge auch folgendes:
wobei self der wxMDIParentFrame ist und z der Anzahl der geöffneten Fenster entspricht. Die isinstance-Abfrage muss sein, da GetChildren() auch solche Sachen wie StatusBar usw. von wxMDIParentFrame mitliefert.
Vermutlich kann man das Ganze auch noch ein wenig geschickter in einer einzigen Zeile verpacken...
Code: Alles auswählen
for i in self.GetChildren():
if isinstance(i, wxMDIChildFrame):
z = z + 1
Vermutlich kann man das Ganze auch noch ein wenig geschickter in einer einzigen Zeile verpacken...
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
jo kann man
myChildFrames enthält dann eine Liste der ChildFrames. Die Anzahl kann mit len(myChildFrames) bestimmt werden und mit einem einfachen
if myChildFrames: kann abgefragt werden ob überhaupt ChildFrames existieren.
Gruß
Dookie
Code: Alles auswählen
myChildFrames = [x for x in self.GetChildren() if isinstance(x, wxMDIChildFrame)]
if myChildFrames: kann abgefragt werden ob überhaupt ChildFrames existieren.
Gruß
Dookie
-
- User
- Beiträge: 52
- Registriert: Montag 19. Januar 2004, 22:19
- Wohnort: Vor meinem Computer
- Kontaktdaten:
Habs jetzt anders gemacht ich speicher jetzt jeden wxMDIChildFrame in einer liste ab da ich beim beenden des programms noch aktionen im Child ausführen muss
edit:
Naja habs jetzt doch so gemacht wie ihr dann spar ich mir die verwaltung mit der liste und die rechenzeit die dabei drauf geht kann man wohl vernachlässigen da die sowieso nur beim schliessen eines fensters anfällt
mal ne ganz andere frage ich bräuche für meine MDI Anwendung noch ein paar icons für meine toolbar kennt ihr eine seite wo man die bekommt ? oder wie ich die von windows benutzen kann ?
edit:
Naja habs jetzt doch so gemacht wie ihr dann spar ich mir die verwaltung mit der liste und die rechenzeit die dabei drauf geht kann man wohl vernachlässigen da die sowieso nur beim schliessen eines fensters anfällt
mal ne ganz andere frage ich bräuche für meine MDI Anwendung noch ein paar icons für meine toolbar kennt ihr eine seite wo man die bekommt ? oder wie ich die von windows benutzen kann ?
-
- User
- Beiträge: 52
- Registriert: Montag 19. Januar 2004, 22:19
- Wohnort: Vor meinem Computer
- Kontaktdaten:
naja ok wenn du auch keine seite kennst
so nun mal wieder ein problem
hab das mit eurem herraus finden wieviele wxMDIchilds noch existieren, bloss wenn ich das genau nach der zerstörung über .Destroy() eines childs aufrufe, existiert immer noch eine zu viel... hab jetzt überlegt den garbage collector einmal durchlaufen zu lassen, oder gibs da noch ne andere lösung ?
so nun mal wieder ein problem
hab das mit eurem herraus finden wieviele wxMDIchilds noch existieren, bloss wenn ich das genau nach der zerstörung über .Destroy() eines childs aufrufe, existiert immer noch eine zu viel... hab jetzt überlegt den garbage collector einmal durchlaufen zu lassen, oder gibs da noch ne andere lösung ?
Ich befürchte da gibts überhaupt keine Lösung für
Bevor das Fenster zerstört wird, werden erst alle Nachrichten abgearbeitet. Erst in der Freizeit (Idle) wird dann die Zerstörung ausgeführt. Leider hab ich noch keine Lösung gefunden, wie man das abwarten kann, oder wie man einfach sicherstellen kann, dass das Programm erst nach der Zerstörung fortfährt.
Jemand eine Idee?
Bevor das Fenster zerstört wird, werden erst alle Nachrichten abgearbeitet. Erst in der Freizeit (Idle) wird dann die Zerstörung ausgeführt. Leider hab ich noch keine Lösung gefunden, wie man das abwarten kann, oder wie man einfach sicherstellen kann, dass das Programm erst nach der Zerstörung fortfährt.
Jemand eine Idee?
Das war ein guter Hinweis! Nach einigen Versuchen hab ich folgende Lösung gefunden:Dookie hat geschrieben:hmm bei Tkinter gibts dafür ein "update_idletasks"
Code: Alles auswählen
myChildFrames[-1].Destroy()
wxGetApp().ProcessEvent( wxIdleEvent() )
wxupdateuievent ist glaube ich zur Menüänderung. Hab ich in wxWidgets noch nie benutzt. Aber kann mich dunkel dran erinnern mich mal mit der MFC mit sowas ähnlichem rumgeärgert zu haben
Zuletzt geändert von Christopy am Dienstag 2. März 2004, 04:30, insgesamt 1-mal geändert.
-
- User
- Beiträge: 52
- Registriert: Montag 19. Januar 2004, 22:19
- Wohnort: Vor meinem Computer
- Kontaktdaten:
So mal wieder ne frage zu wxPython und ich schreib mal meine probleme weiter hier rein dann muss ich nicht gleich 1000 neue threads erstellen...
und zwar hab ich jezt ne Toolbar mit Buttons... die Buttons erstell ich über die Methode AddSimpleTool() das problem ist das der button der dabei entsteht 3D ist und das sieht einfach dumm aus. Nun such ich eine funktion die das abstellt, hatte schon wxBitmapButtons eingefügt bloss der aufwand verdreifacht sich dadurch... jemand ne idee oder doch der umweg über wxBitmapButtons ?
edit:
hat sich schon wieder erledigt, das hängt vom betriebsystem ab ob das ding 3d oder 2d dargestellt wird
und zwar hab ich jezt ne Toolbar mit Buttons... die Buttons erstell ich über die Methode AddSimpleTool() das problem ist das der button der dabei entsteht 3D ist und das sieht einfach dumm aus. Nun such ich eine funktion die das abstellt, hatte schon wxBitmapButtons eingefügt bloss der aufwand verdreifacht sich dadurch... jemand ne idee oder doch der umweg über wxBitmapButtons ?
edit:
hat sich schon wieder erledigt, das hängt vom betriebsystem ab ob das ding 3d oder 2d dargestellt wird