如何使用pyqt5将VARIANT*传递给ocx?

2024-10-01 13:24:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对PyQt5很陌生。 我现在尝试调用ocx函数,它以VARIANT*type作为参数。 所以我创建了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

我可以使用不带参数或只带int/string类型的“ocx\u module”,例如:

success = ocx_module.dynamicCall("Init()")
success = ocx_module.dynamicCall("Login(QString, QString)", user_id, user_pw)

我的环境是:

  • windows 10专业版
  • python 3.6 x86版本
  • pyqt5==5.9

我找了一会儿,但找不到答案。有人能帮我吗?你知道吗


Tags: 函数data参数错误pyqt5longintsuccess
1条回答
网友
1楼 · 发布于 2024-10-01 13:24:45

这对我有用:

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

相关问题 更多 >