Come posso chiamare manualmente un evento specifico dal mio codice?wxPython: chiamata manuale di un evento
risposta
Penso che si desidera wx.PostEvent.
Sono inoltre disponibili alcune informazioni sulla pubblicazione di eventi da altri thread per long running tasks on the wxPython wiki.
Vuoi dire che desideri una spedizione evento?
:: wxPostEvent vuoto wxPostEvent (wxEvtHandler * dest, wxEvent & evento)
In un'applicazione GUI, questa funzione messaggi di eventi all'oggetto specificato dest utilizzando wxEvtHandler :: AddPendingEvent. In caso contrario, invia immediatamente l'evento utilizzando wxEvtHandler :: ProcessEvent. Vedere la documentazione corrispondente per i dettagli (e avvertimenti).
Includere file
<wx/app.h>
Vecchio argomento, ma penso di averlo capito dopo essere stato confuso per un lungo periodo, quindi se qualcun altro arriva qui cercando la risposta, questo potrebbe aiutare.
di inviare manualmente un evento, è possibile utilizzare
self.GetEventHandler().ProcessEvent(event)
(documenti wxWidgets here, docs wxPython here)
o
wx.PostEvent(self.GetEventHandler(), event)
(wxWidgets docs, wxPython docs)
dove event
è l'evento che desideri pubblicare. Costruisci l'evento con ad es.
wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self.GetId())
se si desidera pubblicare un evento EVT_BUTTON. Rendendolo un PyCommandEvent significa che si propagherà verso l'alto; altri tipi di eventi non si propagano di default.
È inoltre possibile creare eventi personalizzati in grado di trasportare qualsiasi dato desiderato. Ecco un esempio:.!
myEVT_CUSTOM = wx.NewEventType()
EVT_CUSTOM = wx.PyEventBinder(myEVT_CUSTOM, 1)
class MyEvent(wx.PyCommandEvent):
def __init__(self, evtType, id):
wx.PyCommandEvent.__init__(self, evtType, id)
myVal = None
def SetMyVal(self, val):
self.myVal = val
def GetMyVal(self):
return self.myVal
(Credo di avere trovato questo codice in un archivio di mailing list da qualche parte, ma io non riesco a trovare di nuovo se questo è il vostro esempio, grazie Si prega di aggiungere un commento e prendere credito per questo!)
Così ora, per pubblicare un evento personalizzato:
event = MyEvent(myEVT_CUSTOM, self.GetId())
event.SetMyVal('here is some custom data')
self.GetEventHandler().ProcessEvent(event)
e si può legare come qualsiasi altro evento
self.Bind(EVT_CUSTOM, self.on_event)
e ottenere i dati personalizzati nel gestore di eventi
def on_event(self, e):
data = e.GetMyVal()
print 'custom data is: {0}'.format(data)
Oppure includere i dati personalizzati nel costruttore di eventi e salvare un passo:
class MyEvent(wx.PyCommandEvent):
def __init__(self, evtType, id, val = None):
wx.PyCommandEvent.__init__(self, evtType, id)
self.myVal = val
ecc
Spero che questo è utile a qualcuno.
C'è un modo semplice semplice per farlo con le versioni recenti di wxPython (vedi http://wiki.wxpython.org/CustomEventClasses):
# create event class
import wx.lib.newevent
SomeNewEvent, EVT_SOME_NEW_EVENT = wx.lib.newevent.NewEvent()
# post it, with arbitrary data attached
wx.PostEvent(target, SomeNewEvent(attr1=foo, attr2=bar))
# bind it as usual
target.Bind(EVT_SOME_NEW_EVENT, target.handler)
- 1. wxPython auinotebook vicino scheda evento
- 2. Evento di segnalazione incendio manuale
- 3. attivazione manuale evento touch
- 4. evento di reset manuale, evento di reset automatico
- 5. In wxPython, come si associa un evento EVT_KEY_DOWN all'intera finestra?
- 6. Chiamata evento click di un pulsante serveride
- 7. Generazione di un comando CommandEvent in wxPython
- 8. L'esecuzione di un evento click manuale su un pulsante in ember.js non fornisce il risultato richiesto
- 9. barra di progresso wxPython
- 10. Un buon costruttore di GUI wxpython?
- 11. Generazione manuale di un contesto di facce
- 12. Chiamata AJAX su evento OnChange in MVC
- 13. Come richiamare un evento automaticamente quando viene chiamata una funzione?
- 14. determina se la funzione viene chiamata come risultato di un evento browser nativo
- 15. wxPython Frame disabilita/abilita?
- 16. Double buffering con wxpython
- 17. come determinare quale procedura di chiamata di evento in delphi
- 18. stampa manuale di un intero N-byte
- 19. Esiste un manuale offline di CakePHP
- 20. creazione manuale di un file caricato Symfony
- 21. Esercitazione su WXpython
- 22. wxPython: Aggiornamento lista wx.ListBox
- 23. Utilizzo manuale di Segue
- 24. Manuale manuale e non adattivo Segues
- 25. MSIL - Manuale di riferimento
- 26. wxPython StaticText Widget Font
- 27. blocco thread wxPython
- 28. wxPython errore wx.lib.plot.PlotCanvas
- 29. Come ottenere l'elenco di chiamata di qualsiasi evento
- 30. Incorporamento di una figura matplotlib all'interno di un pannello WxPython
Non so C, questo è fonte di confusione. Puoi darmi la linea Python che dovrei correre? –
Penso che sia lo stesso. wx.core.PostEvent? Controllare: http://www.google.com/codesearch?q=wxPostEvent&hl=it&btnG=Search+Code –
Non lo vedo nello spazio dei nomi wx principale, né nel namespace di Event. –