Ma fenêtre de niveau supérieur doit savoir quand l'état interne d'un contrôle personnalisé change afin qu'il puisse mettre à jour diverses autres parties de l'interface graphique. Comment générer un événement personnalisé dans le contrôle, afin qu'il puisse se propager et être géré par la fenêtre de niveau supérieur?Générer un CommandEvent personnalisé dans wxPython
Répondre
Je sais que c'est un vieux question, mais il y a une façon plus récente et légèrement plus agréable de le faire dans wxPython. Paraphrasés de http://wiki.wxpython.org/CustomEventClasses et ci-dessus:
Pour définir l'événement:
import wx.lib.newevent
QuantityChangedEvent, EVT_QUANTITY_CHANGED = wx.lib.newevent.NewCommandEvent()
Pour générer un événement:
event = QuantityChangedEvent(self.GetId())
self.GetEventHandler().ProcessEvent(event)
# or ...
#wx.PostEvent(self, event)
Binding l'événement reste le même.
Pour se propager, l'événement doit être wx.CommandEvent. Plus précisément, il doit s'agir d'un wx.PyCommandEvent, qui est compatible Python et qui est capable de transporter ses bits Python en toute sécurité via le système d'événements wxWidgets et de les avoir toujours là lorsque le gestionnaire d'événements est appelé. .
Définir votre type d'événement personnalisé comme suit:
EVT_QUANTITY_CHANGED = wx.PyEventBinder(wx.NewEventType(), 1)
Vous voulez probablement faire au niveau du module, même si elle peut dans certains cas être souhaitable de le faire dans la méthode __init__
de votre commande.
Le contrôle peut maintenant générer un événement comme suit:
event = wx.PyCommandEvent(EVT_QUANTITY_CHANGED.typeId, self.GetId())
self.GetEventHandler().ProcessEvent(event)
La fenêtre de niveau supérieur peuvent se lier et gérer l'événement de la manière habituelle:
self.Bind(mycontrol.EVT_QUANTITY_CHANGED, self.OnQuantityChanged)
- 1. Attributs de CommandEvent
- 2. wxPython - Exécution d'un événement construit avant l'événement lié personnalisé
- 3. La meilleure façon de générer un document personnalisé?
- 4. Affichage d'entiers dans un listxtrx wxpython
- 5. Boutons brillants dans wxPython?
- 6. Gestion des événements dans wxPython
- 7. Génération d'itinéraires imbriqués dans un générateur personnalisé
- 8. wxPython: Gestion des événements dans un widget se trouvant dans un bloc-notes
- 9. générer un rapport dans JIRA
- 10. wxPython dialogs
- 11. Exécution wxPython
- 12. wxpython compilation
- 13. wxPython: Création d'un panneau à hauteur fixe
- 14. registerClientScriptBlocage dans un gestionnaire personnalisé?
- 15. Comment dessiner des bordures de cellules dans un FlexGridSizer wxPython?
- 16. Comment créer un effet de survol sur StaticBitmap dans wxpython?
- 17. wxPython: comment rechercher du texte dans un TextCtrl?
- 18. Comment puis-je insérer RTF dans un wxpython RichTextCtrl?
- 19. wxPython SplitterWindow ne se développe pas dans un groupe
- 20. Comment puis-je dessiner un bitmap pivoté dans wxPython?
- 21. Générer la liste <> de l'objet personnalisé
- 22. wxPython: un widget de panneau pliable
- 23. Formatage dict.items() pour wxPython
- 24. Windows Application Programming & wxPython
- 25. wxPython: Utilisation de EVT_IDLE
- 26. MessageEncoder personnalisé WCF nécessite un comportement personnalisé
- 27. Fermeture et ouverture des trames dans wxPython
- 28. barre de défilement pour statictext dans wxpython?
- 29. Visionneuse de courrier électronique HTML dans wxPython
- 30. case à cocher multiligne dans wxpython