Python 如何将参数传递给Win32 COM事件处理程序
下面的代码工作正常。我找不到方法将一些参数传递给Python 如何将参数传递给Win32 COM事件处理程序,python,pywin32,python-multithreading,win32com,pythoncom,Python,Pywin32,Python Multithreading,Win32com,Pythoncom,下面的代码工作正常。我找不到方法将一些参数传递给EventHandler,或者从EventHandler调用MainClass的方法。例如,我希望通过构造函数或setter方法传递它,而不是使用常量param。我已经尝试了来自的建议。但在本例中,EventHandler实例不捕获任何事件(或者至少在stdout中没有显示任何内容) 一种可能是将与events函数一起使用。但这可能不是最好的办法。现在,handler和client对象是不同的实体,因此这导致了它们之间的其他交互机制 class E
EventHandler
,或者从EventHandler
调用MainClass
的方法。例如,我希望通过构造函数或setter方法传递它,而不是使用常量param
。我已经尝试了来自的建议。但在本例中,EventHandler
实例不捕获任何事件(或者至少在stdout中没有显示任何内容)
一种可能是将
与events
函数一起使用。但这可能不是最好的办法。现在,handler
和client
对象是不同的实体,因此这导致了它们之间的其他交互机制
class EventHandler:
def set_params(self, client):
self.client = client
def OnConnected(self):
print "connected!"
self.client.do_something()
return True
client = win32com.client.Dispatch("Lib.Obj")
handler = win32com.client.WithEvents(client, EventHandler)
handler.set_client(client)
client.connect()
while True:
PumpWaitingMessages()
time.sleep(1)
这是。请阅读我的答案,这应该可以解决您的问题:
class EventHandler:
def set_params(self, client):
self.client = client
def OnConnected(self):
print "connected!"
self.client.do_something()
return True
client = win32com.client.Dispatch("Lib.Obj")
handler = win32com.client.WithEvents(client, EventHandler)
handler.set_client(client)
client.connect()
while True:
PumpWaitingMessages()
time.sleep(1)