Mein Fenster der obersten Ebene muss wissen, wenn der interne Status eines benutzerdefinierten Steuerelements geändert wird, damit es verschiedene andere Teile der GUI aktualisieren kann. Wie erzeuge ich ein benutzerdefiniertes Ereignis im Steuerelement, sodass es vom Fenster der obersten Ebene weitergegeben und verarbeitet werden kann?Generieren eines benutzerdefinierten CommandEvent in WxPython
Antwort
Ich weiß, das ist ein alter Frage, aber es gibt einen neueren, etwas netteren Weg, dies in wxPython zu tun. Umschrieben von http://wiki.wxpython.org/CustomEventClasses und der oben:
das Ereignis zu definieren:
import wx.lib.newevent
QuantityChangedEvent, EVT_QUANTITY_CHANGED = wx.lib.newevent.NewCommandEvent()
ein Ereignis zu generieren:
event = QuantityChangedEvent(self.GetId())
self.GetEventHandler().ProcessEvent(event)
# or ...
#wx.PostEvent(self, event)
Bindung des Ereignisses gleich bleibt.
Um sich auszubreiten, muss das Ereignis ein wx.CommandEvent sein. (Details zur Propagierung finden Sie unter wxWidgets event handling overview.) Genauer gesagt sollte es eine wx.PyCommandEvent sein, die Python-fähig ist und ihre Python-Bits sicher durch das wxWidgets-Ereignissystem transportieren kann und sie immer noch dort haben, wenn der Event-Handler aufgerufen wird .
Ihren benutzerdefinierten Ereignistyp wie folgt definieren:
EVT_QUANTITY_CHANGED = wx.PyEventBinder(wx.NewEventType(), 1)
Sie wahrscheinlich dieses auf Modulebene tun wollen, obwohl es in einigen Fällen wünschenswert sein kann, das in der __init__
Methode der Kontrolle zu tun.
kann die Steuerung nun ein Ereignis erzeugen, wie folgt:
Fensterevent = wx.PyCommandEvent(EVT_QUANTITY_CHANGED.typeId, self.GetId())
self.GetEventHandler().ProcessEvent(event)
Die Top-Level binden kann und das Ereignis in der üblichen Art und Weise handhaben:
self.Bind(mycontrol.EVT_QUANTITY_CHANGED, self.OnQuantityChanged)
- 1. Attribute von CommandEvent
- 2. Generieren von benutzerdefinierten Loggern
- 3. wxPython: Erstellen eines scrollbaren DC
- 4. Wie kann ich den Logger mithilfe eines benutzerdefinierten Protokollierungshandlers in eine wxPython-textCtrl umleiten?
- 5. Generieren von Dateibeats benutzerdefinierten Feldern
- 6. Generieren von benutzerdefinierten Methoden in Eclipse
- 7. Generieren verschachtelter Routen in einem benutzerdefinierten Generator
- 8. Generieren von benutzerdefinierten Textdateien in Java
- 9. Wxpython: Positionieren eines Menüs unter einer Symbolleistenschaltfläche
- 10. Ändern Sie die Farbe eines StaticText, wxPython
- 11. WxPython SplitterWindow erweitern nicht innerhalb eines Panel
- 12. wxPython - Ausführen von eingebautem Ereignis vor dem benutzerdefinierten gebundenen Ereignis
- 13. Generieren eines Div in asp.net
- 14. Behandeln von Ereignissen in WxPython
- 15. Implementieren eines benutzerdefinierten Escaper in Freemarker
- 16. wxPython in Python 3.4.1
- 17. Beobachtermuster in wxPython
- 18. Animierte Splash in WxPython
- 19. dynamisches Plotten in wxpython
- 20. WxPython in osx 10.11
- 21. ImageResizer Generieren eines Lizenzschlüssels
- 22. Generieren Menge SSO Token von benutzerdefinierten App
- 23. Tool zum Generieren von benutzerdefinierten Konfigurationsabschnitten
- 24. Einstellen der Breite eines wxPython TextCtrl in Anzahl der Zeichen
- 25. Generieren einer benutzerdefinierten Kompilierungszeit Warnung C#
- 26. Generieren eines Geschäftsschlüssels
- 27. Generieren eines rand Zeit
- 28. Generieren von benutzerdefinierten Miniaturansichten aus ALAssetRepresentation
- 29. Generieren von benutzerdefinierten Farbpalette für Julia-Set
- 30. wxpython wx.EVT_LEFT_DOWN