내 최상위 윈도우는 커스텀 컨트롤의 내부 상태가 변경되어 GUI의 다른 여러 부분을 업데이트 할 수있는시기를 알아야합니다. 컨트롤에서 사용자 지정 이벤트를 생성하여 전파하고 최상위 창에서 처리하도록하려면 어떻게해야합니까?wxPython에서 커스텀 CommandEvent 생성하기
5
A
답변
12
나는이 오래된 알고 wxPython에서이 작업을 수행하는 좀 더 새롭고 약간 좋은 방법이 있습니다. http://wiki.wxpython.org/CustomEventClasses 및 상기에서 인용 함 :
이벤트 정의 :
import wx.lib.newevent
QuantityChangedEvent, EVT_QUANTITY_CHANGED = wx.lib.newevent.NewCommandEvent()
이벤트를 생성하려면
event = QuantityChangedEvent(self.GetId())
self.GetEventHandler().ProcessEvent(event)
# or ...
#wx.PostEvent(self, event)
이벤트를 결합하는 것은 동일하다.
11
전파하려면 이벤트가 wx.CommandEvent이어야합니다. (전파에 대한 자세한 내용은 wxWidgets event handling overview을 참조하십시오.) 더 구체적으로는 wx.PyCommandEvent이어야하며 파이썬을 인식하고 wxWidgets 이벤트 시스템을 통해 Python 비트를 안전하게 전송할 수 있으며 이벤트 핸들러가 호출 될 때도 계속 존재하게 할 수 있습니다 . 다음과 같이
는 사용자 정의 이벤트 유형을 정의
EVT_QUANTITY_CHANGED = wx.PyEventBinder(wx.NewEventType(), 1)
당신은 아마 모듈 수준에서이 작업을 수행하려면, 어떤 상황에서 컨트롤의 __init__
방법에서이 작업을 수행하는 것이 바람직 할 수도있다. 다음과 같이
컨트롤은 이제 이벤트를 생성 할 수 있습니다
event = wx.PyCommandEvent(EVT_QUANTITY_CHANGED.typeId, self.GetId())
self.GetEventHandler().ProcessEvent(event)
결합하여 일반적인 방법으로 이벤트를 처리 할 수있는 최상위 창
self.Bind(mycontrol.EVT_QUANTITY_CHANGED, self.OnQuantityChanged)
관련 문제
- 1. 커스텀 레일스 루트 생성하기
- 2. wxPython에서 메인 프레임의 하위 프레임 생성하기
- 3. 안드로이드 : 커스텀 컨테이너 뷰 생성하기
- 4. wxPython에서 키 이벤트를 이스케이프?
- 5. wxpython에서 열 정렬?
- 6. wxPython에서 패널이 확장되지 않습니다.
- 7. wxPython에서 ScrolledWindow 만들기
- 8. wxPython에서 wx.CallLater 사용
- 9. wxPython에서 StaticText 숨기기/삭제
- 10. wxPython에서 그리기위한 최상의 캔버스?
- 11. wxPython에서 포커스가 보이지 않습니까?
- 12. wxpython에서 wxListCtrl의 크기 제한
- 13. wxpython에서 위젯 dc를 얻으십시오.
- 14. wxpython에서 textctrl의 가치를 받아들이는 법
- 15. wxpython에서 "&"버튼 텍스트를 쓰는 방법
- 16. wxpython에서 위젯 ID의 용도는 무엇입니까?
- 17. wxPython에서 캔버스로 드래그 앤 드롭
- 18. WxPython에서 이미지의 프레임 크기 조정
- 19. wxPython에서 found의 배열을 반환하는 검색?
- 20. wxPython에서 DRAG 기능을 통합하는 방법
- 21. 커스텀 오브젝트를 사용한 상수 표현
- 22. 목차 생성하기
- 23. 쉘과 MySQL 커스텀 커스텀 연결 성공 메시지
- 24. JEditorPane, HTMLEditorKit - 커스텀 태그를 삽입하는 커스텀 액션
- 25. 커스텀 UITabbarController
- 26. 커스텀 UIButtons
- 27. 커스텀 쓰레드?
- 28. 커스텀 디렉토리/폴더 머지 도구
- 29. wxPython에서 편집 할 수없는 텍스트 상자
- 30. wxpython에서 EVT_BUTTON의 버튼 라벨이 변경 되었습니까?