Moje okno najwyższego poziomu musi wiedzieć, kiedy zmienia się stan wewnętrzny niestandardowego formantu, aby można było aktualizować różne inne elementy interfejsu GUI. Jak wygenerować niestandardowe zdarzenie w formancie, aby można było propagować i być obsługiwane przez okno najwyższego poziomu?Generowanie niestandardowego obiektu CommandEvent w wxPython
Odpowiedz
wiem, że to jest stary pytanie, ale istnieje nowszy, nieco ładniejszy sposób na zrobienie tego w wxPythonie. Parafrazowane z http://wiki.wxpython.org/CustomEventClasses i wyżej:
zdefiniowanie terminu:
import wx.lib.newevent
QuantityChangedEvent, EVT_QUANTITY_CHANGED = wx.lib.newevent.NewCommandEvent()
generuje zdarzenie:
event = QuantityChangedEvent(self.GetId())
self.GetEventHandler().ProcessEvent(event)
# or ...
#wx.PostEvent(self, event)
Wiązanie zdarzenie pozostaje taka sama.
Aby propagować, wydarzenie musi być wx.CommandEvent. (Szczegółowe informacje na temat propagacji znajdują się w wxWidgets event handling overview.) Dokładniej, powinien to być wx.PyCommandEvent, który jest wyposażony w Python i jest w stanie bezpiecznie przenosić bity w języku Python za pośrednictwem systemu zdarzeń wxWidgets i nadal je tam przechowywać po wywołaniu procedury obsługi zdarzeń .
Określ swój własny typ zdarzenia w następujący sposób:
EVT_QUANTITY_CHANGED = wx.PyEventBinder(wx.NewEventType(), 1)
Prawdopodobnie chcesz zrobić to na poziomie modułu, chociaż może w pewnych okolicznościach być pożądane, aby to zrobić w metodzie kontrolą __init__
.
Sterowanie może teraz generować zdarzenie następująco:
event = wx.PyCommandEvent(EVT_QUANTITY_CHANGED.typeId, self.GetId())
self.GetEventHandler().ProcessEvent(event)
okno najwyższego poziomu może wiązać i obsłużyć zdarzenia w zwykły sposób:
self.Bind(mycontrol.EVT_QUANTITY_CHANGED, self.OnQuantityChanged)
- 1. Generowanie niestandardowego JSON tablicę
- 2. Typ JavaScript obiektu niestandardowego
- 3. Generowanie niestandardowego ostrzeżenia o czasie kompilacji C#
- 4. Dodawanie wxpython w pygame
- 5. Tworzenie niestandardowego obiektu Stat w ggplot2
- 6. Tworzenie niestandardowego identyfikatora obiektu w MongoDB
- 7. Rusztowanie/Generowanie właściwości obiektu w inicjalizatorze
- 8. Samouczek WXpython
- 9. Install WxPython w OSX 10.11
- 10. Jak zainstalować wxPython w virtualenv
- 11. Generowanie schematu Avro z określonego obiektu Java
- 12. Flex - Wysyłanie parametru do niestandardowego obiektu ItemRenderer?
- 13. Pokaż dane niestandardowego obiektu do ListBox WPF
- 14. WxPython StaticText Widget Czcionka
- 15. Auto-zakończenie WxPython wxComboBox
- 16. Nieeksportowalne pole tekstowe wxPython
- 17. wxPython wx.lib.plot.PlotCanvas error
- 18. wxPython nie znaleziono błąd
- 19. Generowanie kodu T4 podczas kompilacji, odniesienie do niestandardowego zespołu
- 20. Jak utworzyć metodę dla obiektu niestandardowego w JavaScript?
- 21. Przekształcanie niestandardowego obiektu w JSON przy użyciu JSON gem
- 22. Generowanie obiektu JSON z NewtonSoft w jednej linii
- 23. Czy można używać Panda3D w aplikacji wxPython?
- 24. wxPython: Jak wypełnić tekst w panelu Tekst
- 25. Wyświetlanie obrazu .png w oknie wxPython
- 26. Zdarzenia klawiatury przechwytywania wxpython w pliku wx.Frame
- 27. Instalowanie wxPython w virtualenv pod Linuxem
- 28. Czyszczenie tła w matplotlib za pomocą wxPython
- 29. wxPython: Czy wyłączyć zakładkę notatnika?
- 30. Instalacja wxPython na Ubuntu 12.04