> 백엔드 개발 > 파이썬 튜토리얼 > wxpython의 사용자 정의 이벤트 구현 및 사용 분석

wxpython의 사용자 정의 이벤트 구현 및 사용 분석

不言
풀어 주다: 2018-05-16 16:27:06
원래의
2406명이 탐색했습니다.

이 기사의 예에서는 wxpython의 사용자 정의 이벤트 구현 및 사용을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하십시오.

사용자 정의 이벤트를 생성하는 단계:

① wx.PyCommandEvent에서 상속해야 하는 이벤트 클래스를 정의합니다. 그리고 이벤트 매개변수를 가져오고 설정하는 get 및 set 메소드를 정의합니다.

② 이벤트 유형과 바인더 개체를 생성하여 이벤트를 특정 개체에 바인딩합니다.

3 사용자 정의 이벤트 객체를 생성하고, 이벤트 매개변수를 설정하고, ProcessEvent() 메서드를 사용하여 이 인스턴스를 이벤트 처리 시스템에 도입합니다.

④ 커스텀 이벤트의 이벤트 핸들러를 바인딩합니다.

⑤ 이벤트 핸들러에서 이벤트에 응답합니다.

샘플 코드:

#!/usr/bin/env python
#coding=utf-8
import wx
class MyTestEvent(wx.PyCommandEvent):  #1 定义事件
  def __init__(self, evtType, id):
    wx.PyCommandEvent.__init__(self, evtType, id)
    self.eventArgs = ""
  def GetEventArgs(self):
    return self.eventArgs
  def SetEventArgs(self, args):
    self.eventArgs = args
myEVT_MY_TEST = wx.NewEventType() #2 创建一个事件类型
EVT_MY_TEST = wx.PyEventBinder(myEVT_MY_TEST, 1) #3 创建一个绑定器对象
class MyFrame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300),pos=(300,300))
    panel = wx.Panel(self, -1)
    self.button1 = wx.Button(panel,id=-1,pos=(40, 40),label="button1")
    self.Bind(wx.EVT_BUTTON, self.OnButton1Click, self.button1)
    self.Bind(EVT_MY_TEST, self.OnHandle)# 4绑定事件处理函数
  def OnButton1Click(self,event):
    self.OnDoTest()
  def OnHandle(self,event):#8 事件处理函数
    dlg = wx.MessageDialog(self, event.GetEventArgs(),'A Message Box',wx.OK | wx.ICON_INFORMATION)
    dlg.ShowModal()
    dlg.Destroy()
  def OnDoTest(self):
    evt = MyTestEvent(myEVT_MY_TEST, self.button1.GetId()) #5 创建自定义事件对象
    evt.SetEventArgs("test event")  # 6添加数据到事件
    self.GetEventHandler().ProcessEvent(evt) #7 处理事件
if __name__ == '__main__':
  app = wx.PySimpleApp()
  frame = MyFrame()
  frame.Show(True)
  app.MainLoop()
로그인 후 복사

지침:

1. MyTestEvent 클래스를 wx.PyCommandEvent의 하위 클래스로 정의합니다. wx.PyCommandEvent는 새 이벤트 클래스를 생성하고 C 클래스를 Python 코드에 연결하는 데 사용할 수 있는 wxPython 관련 구조입니다.

2. wx.NewEventType()은 wx.NewId()와 유사하며 고유한 이벤트 유형 ID를 반환합니다.

3. 두 번째 매개변수의 값은 wx.EvtHandler.Bind() 메소드에서 사용되는 wxId 식별 번호를 나타냅니다. 어떤 객체가 이벤트의 소스인지.

4. 이벤트 핸들러 바인딩.

5. 사용자 정의 이벤트 객체를 생성하고 이벤트를 트리거한 컨트롤의 ID를 MyTestEvent 생성자에 매개변수로 전달합니다.

6. 이벤트에 데이터를 추가합니다. 이 방법을 통해 필요한 정보 중 일부를 전달할 수 있습니다.

7. ProcessEvent()에 대한 호출은 이벤트 처리 시스템에 이 새로운 이벤트를 도입합니다. GetEventHandler()에 대한 호출은 창 개체 자체인 wx.EvtHandler의 인스턴스, 즉 MyFrame을 반환합니다.

8. 이벤트 처리 기능을 바인딩합니다. 여기서 이벤트 처리 방법은 MessageDialog를 통해 들어오는 이벤트 매개변수를 표시하는 것입니다.

이 기사가 Python 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿