Die wx.Frame Klasse hat ja kein ShowModal. Ich hätte aber trodzdem gerne Frames, welche in dem aktuellen Programm zu oberst sind. Die hinteren Frames sollten Deaktiviert sein (also nichs anklickbar).
Gibts da was?
ShowModal() Frame
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi DatenMetzgerX!DatenMetzgerX hat geschrieben:Die wx.Frame Klasse hat ja kein ShowModal. Ich hätte aber trodzdem gerne Frames, welche in dem aktuellen Programm zu oberst sind.
Erstelle statt einem wx.Frame einen wx.Dialog. Diesen kannst du dann statt mit Show() mit ShowModal() aufrufen.
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
dann geht CreateStatusBar() nicht mehr
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi DatenMetzgerX!DatenMetzgerX hat geschrieben:dann geht CreateStatusBar() nicht mehr
Stimmt. Daran hatte ich nicht gedacht.
http://lists.wxwidgets.org/archive/wxPy ... 00147.html
http://wxwidgets.org/manuals/2.6.3/wx_w ... wmakemodal
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Genau das habe ich gesucht, Merci 

- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Irgend wie gibt es da noch einen Fehler...
z.T stürzt das ganze dann einfach ab, im Anhang mal die Dateien.
http://famreiser.ch/python/image_resizer.zip
benötigt wird wxPython und PIL
z.T stürzt das ganze dann einfach ab, im Anhang mal die Dateien.
http://famreiser.ch/python/image_resizer.zip
benötigt wird wxPython und PIL
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi DatenMetzgerX!DatenMetzgerX hat geschrieben:http://famreiser.ch/python/image_resizer.zip
Ich habe mir den Code mal angesehen. Ich glaube ich weiß, warum das Programm abstürzt.
1. Du hast ja mehrere Frames. Wenn du vom Hauptframe aus den BrowseFolder-Frame aufrufst, dann machst du den BrowseFolder-Frame "modal". Zuerst einmal, würde ich den Frame nur dann modal machen, wenn ich vorher geprüft habe, ob ein Parent übergeben wurde.
Code: Alles auswählen
if parent:
self.MakeModal(True)
Dadurch kommt das System ein wenig durcheinander. --> Die Methode wird zu oft aufgerufen.
Besser wäre es, wenn du das Event EVT_CLOSE abfängst und dort prüfst ob ein Parent übergeben wurde. Wenn ja, dann rufe
Code: Alles auswählen
self.MakeModal(False)
Den Schließen-Button würde ich auf eine **eigene** Methode zugreifen lassen.
Code: Alles auswählen
def __init__(self, parent, ...):
self.parent = parent
...
self.Bind(wx.EVT_CLOSE, self.on_close)
self.cmdClose.Bind(wx.EVT_BUTTON, self.exit)
...
self.Layout()
if self.parent:
self.MakeModal(True)
self.CenterOnParent()
else:
self.Center()
def exit(self, event = None):
"""
Event-Handler für den Button
"""
self.Close()
def on_close(self, event):
"""
Bei jedem EVT_CLOSE...
"""
if self.parent:
self.MakeModal(False)
event.Skip()
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Merci für die Tips....
Der Fehler lag gar nicht an dem makeModal
, sondern an wx.BuyInfo. Die lassen sich irgend wie nicht zerschtören (Destroy())
Der Fehler lag gar nicht an dem makeModal

- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi DatenMetzgerX!DatenMetzgerX hat geschrieben:sondern an wx.BuyInfo. Die lassen sich irgend wie nicht zerschtören (Destroy())
Die Aufrufe von wxBusyInfo() hatte ich vorher schon raus genommen. Trotzdem stürzte das Ding ab. Erst nach den anderen Änderungen funktioniert es bei mir wie gewünscht.
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi, das kommt mir bekannt vor.DatenMetzgerX hat geschrieben:Merci für die Tips....
Der Fehler lag gar nicht an dem makeModal, sondern an wx.BuyInfo. Die lassen sich irgend wie nicht zerschtören (Destroy())
Ich glaube, du musst die Instanz von BusyInfo mit del zerstören und
nicht mit .Destroy()
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
So nun bin ich wiedermal bei einem ähnlichen Problem
Habe ein Hauptframe... aus dem rufe ich ein Subframe auf ( das MakeModal == True setzt). Nun will ich im Hauptframe auf die "Antwort" des Subframes warten. D.h. Wenn der User den Ok Button klickt ( wx.ID_OK) soll im Hauptframe dann xy abläufen sonst yx. Nur wenn ich if msg.Show() == wx.ID_OK:
mache wartet er nicht. Er zeigt das Frame an und geht gleich weiter ;(
Wie kann mann das relativ einfach umgehen....

Habe ein Hauptframe... aus dem rufe ich ein Subframe auf ( das MakeModal == True setzt). Nun will ich im Hauptframe auf die "Antwort" des Subframes warten. D.h. Wenn der User den Ok Button klickt ( wx.ID_OK) soll im Hauptframe dann xy abläufen sonst yx. Nur wenn ich if msg.Show() == wx.ID_OK:
mache wartet er nicht. Er zeigt das Frame an und geht gleich weiter ;(
Wie kann mann das relativ einfach umgehen....