gpt4 book ai didi

python - 将附加参数传递给 python 回调对象 (win32com.client.dispatchWithEvents)

转载 作者:行者123 更新时间:2023-11-28 16:38:05 27 4
gpt4 key购买 nike

我正在使用 win32com 包与 Windows 应用程序交互(应用程序并不重要)。

简而言之,我想要实现的是订阅一个更新的表。

我已经成功地实现了一个回调,它接收到表更新时返回的数据,但我现在需要的是对接收到的数据采取行动。

如果我可以用额外的参数实例化回调对象(见下面的代码),这个问题会很容易解决,但我不知道如何做到这一点。


回调类:

class callBackEvents(object):
""" Callback Object for win32com
"""

def OnNewData(self, XMLData):
logging.info("Subscription returned information")
print "HERE : {}".format(XMLData))

# Would like to use some argument to access logic
# For how to use the new data

def OnActionResult(self, job, msg):
return True

def OnServerDisconnect(self):
logging.debug("Server Disconnected")

def OnServerConnect(self):
logging.debug("Trader Connected To Server")

实例化回调对象:

# Instantiate API com object
self.app = win32com.client.DispatchWithEvents("WindowsApplication" callBackEvents)
# I would like to give the callback object extra arguments e.g. callBackEvents(params)

编辑实例化回调对象:

# Instatiate two com objects
self.com1 = win32com.client.DispatchWithEvents("WindowsApplication" callBackEvents)
self.com2 = win32com.client.DispatchWithEvents("WindowsApplication" callBackEvents)

# Create multiple subscriptions (Note these are asynchronous)
# Pushing the subscribed info is not a problem and done elsewhere
self.com1.Subscribe(<subscription info>)
self.com2.Subscribe(<subscription info>)

现在,当订阅信息到达回调对象时,我不知道哪个 com 对象设置了订阅(我可以根据返回的信息进行猜测,但是当设置相同的订阅时,这会导致问题)

最佳答案

由于您可能只有一个应用程序实例,因此只有一个 DispatchWithEvents,您可以简单地将参数设为该类的成员:

class callBackEvents(object):
""" Callback Object for win32com
"""

params = None

def OnNewData(...

...

# populate the params field
callBackEvents.params = yourParams

self.app = win32com.client.DispatchWithEvents("WindowsApplication", callBackEvents)

您当然可以将 params 设置为全局参数,但您应该仅将全局参数用作最后的手段或用于常量。

关于python - 将附加参数传递给 python 回调对象 (win32com.client.dispatchWithEvents),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com