activex dll에서 com 개체를 동적으로 만들어야하며 각 개체가 이벤트 처리기로 처리해야하는 이벤트를 발생시킬 수 있습니다.어떻게 파이썬에서 VB의 컨트롤 배열을 모방 하는가?
이 작업은 win32com.client.Dispatch
과 win32com.client.WithEvents
으로 쉽게 수행 할 수 있으며 "개별"클래스의 이벤트 처리기를 각 개체와 연결할 수 있습니다. 그래서 같이 : 나는 얼마나 많은 개체를 알 수 없기 때문에,
listOfObjects = []
for i in range(10):
obj = win32com.client.Dispatch("mycom")
listOfObjects.append(obj)
ev = win32com.client.WithEvents(obj, MyEventHandlerClass)
내가 한 번만 이벤트 핸들러를 코딩 할 : 나는 동적으로 객체를 생성하는 경우
class evt_1:
def OnEvent(self):
print "got event from object 1"
class evt_2:
def OnEvent(self):
print "got event from object 2"
obj_1 = win32com.client.Dispatch("mycom")
ev_1 = win32com.client.WithEvents(obj_1, evt_1)
obj_2 = win32com.client.Dispatch("mycom")
ev_1 = win32com.client.WithEvents(obj_2, evt_2)
그러나 목록에 말할 수 나는 실행 시간까지 만들 것입니다. 그리고 이벤트 처리기 내부에서 이벤트를 발생시킨 객체를 얻는 방법을 모르겠습니다.
VB6에서는 컨트롤 배열을 사용하는 activex 컨트롤을 사용했으며 이벤트 처리기는 이벤트를 발생시킨 컨트롤의 "인덱스"값을 가져옵니다.
비슷한 점이 파이썬에서 가능하다고 생각하십니까?
python 데코레이터가 작동하는지 모르겠지만 com 객체의 각 인덱스에 대해 MyEventHandlerClass를 "장식"하는 데 사용할 수 있습니까?
예! 이 작품 .. 덕분에 Ryan 나는 또한 comtypes 모듈을 살펴 보겠습니다 .. win32com과는 조금 다른 것처럼 보입니다. – sarshad