Welches Event wenn ein Panel angezeigt wird?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Gremlin
User
Beiträge: 166
Registriert: Freitag 28. Mai 2010, 23:49

Hallo,

ich habe mir grade überlegt, welches Event aufgerufen wird, wenn ein wx.Panel mit Show() oder Hide() ein/ausgeblendet wird. Primär gehts mir ums einblenden.
Nachdem mir Google und die Doku nicht helfen konnten (Die Suchfunktion hier auch nicht.), hab ich ein wenig rumprobiert und bin zu folgendem Ergebnis gekommen:

Code: Alles auswählen

def size_event(self, event):
    print 'wird angezeigt'
    event.Skip()
Aber gibt es da vielleicht doch noch eine andere Möglichkeit?

Edit: Mir fällt grad auf, dass das sowieso nicht funktioniert... Wird ja nur einmal aufgerufen :|
ntrunk
User
Beiträge: 83
Registriert: Sonntag 7. September 2008, 23:09
Wohnort: Buchen (Odenwald)

Hi Gremlin,
evtl. könntest du die Hide-/Show-Methode überschreiben?
Gruß
Norbert
Gremlin
User
Beiträge: 166
Registriert: Freitag 28. Mai 2010, 23:49

Autsch. Mal abgesehen von dieser Schnapsidee mit dem Size-Event jetzt auch noch das :roll:

Ja, das ist eine Möglichkeit, Danke :P
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Ich weiß es nicht wirklich, nur so ein spontaner Einfall: Vielleicht wird ja der wxEVT_PAINT beim Einblenden getriggert?
Die Doku sagt:
"A paint event is sent when a window's contents needs to be repainted."

Gruß
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Ist mir gerade eingefallen: Wenn alles nichts hilft, dann verwende doch das "wxPython Inspection Widget Tool". Das bietet einen "EventWatcher", der Dir alle Events, die getriggert werden, auflistet. Wenn Du dann Dein Panel ein-/ausblendest, erscheint dort das passende Event.

Um das Tool zu starten, muss Deine Anwendung 'wx.lib.inspection' importieren und das 'InspectionTool' über die wx.App() gestartet werden:

Code: Alles auswählen

class App(wx.App, wx.lib.inspection.InspectionTool):
    def __init__(self):
        wx.App.__init__(self)
    
    def OnInit(self):
        self.Init()
        self.Show()
Vielleicht hilft's...

Gruß
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Gremlin
User
Beiträge: 166
Registriert: Freitag 28. Mai 2010, 23:49

mutetella hat geschrieben:Ist mir gerade eingefallen: Wenn alles nichts hilft, dann verwende doch das "wxPython Inspection Widget Tool".
Woah, wie geil ist das denn? Damit macht Gui Design ja nochmal mehr Spaß. :D

Und ja, damit hab ich auch das Event rausbekommen (Der Name ist überhaupt nicht nachzuvollziehen.. :roll: ): wx.EVT_SHOW
Allerdings gefällt mir die Sache mit der eigenen Show() Methode irgendwie besser.

Danke mutetella :)
Antworten