Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
522 views
in Technique[技术] by (71.8m points)

python - PyQt: How to send parameters by reference with QAxWidget

I'm attempting to use PyQt to talk to an ActiveX COM object in Python. This method works in Python:

myobj.dynamicCall('SetAbsMovePos(int, double)', [0, 10])

However, I can't send arguments by reference. From the docs, the method I wish to call is:

int GetNumHWUnits (int lHWType, int& plNumUnits)

and the basic example code is:

QVariantList params = ...
int result = object->dynamicCall("GetNumHWUnits(int, int&)", params).toInt();

I presume the equivalent code in Python, using ctypes, should be:

num = ctypes.c_int()
myobj.dynamicCall('GetNumHWUnits(int, int&)', [6, ctypes.byref(num)])

but num is never updated.

What's the equivalent code or workaround in Python, and how can I send and later read an argument of type int& using Python?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You could try to pass a list with just one element:

def funct(a):
    a[0] = 4

b = [3]
funct(b)
print b[0]

Output: 4


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...