2016-05-07 17 views
1

Ich möchte Ereignisse mit AddPendingEvent senden. Nach dem Aufruf von AddPendingEvent passiert jedoch nichts. Das folgende ist ein Beispiel, in dem erwartet wird, dass eine Schaltfläche eine wx.CloseEvent an den Rahmen sendet.AddPendingEvent hat keinen Effekt

import wx 

class MainFrame(wx.Frame): 
    def __init__(self): 
     super(wx.Frame, self).__init__(None, wx.ID_ANY, 'Test') 

     self.button = wx.Button(self, wx.ID_ANY, 'Close', self.GetClientSize()/2) 
     self.button.Bind(wx.EVT_BUTTON, self.OnButton) 

     self.Bind(wx.EVT_CLOSE, self.OnClose) 

     self.Show() 

    def OnButton(self, event: wx.CommandEvent): 
     self.AddPendingEvent(wx.CloseEvent()) 

    def OnClose(self, event: wx.CloseEvent): 
     self.Destroy() 

if __name__ == '__main__': 
    app = wx.App() 
    frame = MainFrame() 
    app.MainLoop() 

Ich habe auch versucht, QueueEvent oder wx.PostEvent, die Ergebnisse sind die gleichen.

Antwort

0

Sie sollten von PyCommandEvent gehen und erstellen & enqueue ein Ereignis vom Typ wx.EVT_CLOSE wie in:

self.AddPendingEvent(wx.PyCommandEvent(wx.EVT_CLOSE.typeId, self.GetId())) 
Verwandte Themen