我对PyQt5很新。 我现在正在尝试调用ocx函数,它将VARIANT *类型作为参数。 所以我创建了QVariant变量并将其抛入函数中,但我只能得到错误。
函数原型是:
LONG ReceiveProcDataArr(LONG nRqID, BSTR sProc, LONG nOutRecIndex, VARIANT* pArrData)
我尝试使用以下代码:
from PyQt5.QtCore import QVariant
ocx_module = QAxWidget("[ocx control]")
# some codes to skip...
data = QVariant()
item_length = ocx_module.dynamicCall("ReceiveProcDataArr(int, QString, int, QVariant&)", [rqID, proc, 0, data])
我收到了错误:
Error calling IDispatch member ReceiveProcDataArr: Type mismatch in parameter 3
我可以使用“ocx_module”,它不接受参数或仅采用int / string类型,如:
success = ocx_module.dynamicCall("Init()")
success = ocx_module.dynamicCall("Login(QString, QString)", user_id, user_pw)
我的环境是:
我搜索了一会儿,但我找不到关于此的答案。任何人都可以帮助我吗?
答案 0 :(得分:0)
这对我有用:
list1 = ["VW SPL", 0]
print(ocx.dynamicCall('ReadVariable(QVariant, QVariant&)', list1))
print(list1)
在你的情况下试试这个:
data = [rqID, proc, 0, 0]
item_length = ocx_module.dynamicCall("ReceiveProcDataArr(QVariant, QVariant,
QVariant, QVariant&)", data)
print(data[3])
请注意,引用只会更新列表:
int foo = 0
data = [rqID, proc, 0, foo]
item_length = ocx_module.dynamicCall("ReceiveProcDataArr(QVariant, QVariant,
QVariant, QVariant&)", data)
print(data[3])//It prints the result
print(foo)//It prints 0