如何在Python中将Activex事件连接到插槽

时间:2015-01-27 00:40:52

标签: python qt activex

我在QAxWidget类中有一个ActiveX控件,我试图将一个Activex事件连接到python中的一个Slot

  

void MoveComplete(int ID)[signal]

文档说

QObject::connect(object, SIGNAL(MoveComplete(int)), receiver, SLOT(someSlot(int)));

但是当我尝试运行它时,我得到:

  

NameError:全局名称' MoveComplete'没有定义。

我也试过像这样运行它

self.connect(self, QtCore.SIGNAL('MoveComplete(int)'), self, QtCore.SLOT(self.test2()))

但是它会在执行运动的函数的开头被调用,而不是在它完成之后调用。

如何将插槽连接到此信号?

1 个答案:

答案 0 :(得分:0)

我显然无法测试这个,我不知道你指的是哪些文档,但这样的东西应该在PyQt4中起作用:

self.connect(axwidget, QtCore.SIGNAL('MoveComplete(int)'), self.test2)

也就是说,第一个参数是QAxWidget类的实例,第二个参数是信号签名,最后一个参数是python可调用对象(即函数,方法,lambda等)。

在PyQt中连接信号并不总是像在C ++中那样工作。有关更多详细信息,请参阅PyQt4文档中的Old-style Signal and Slot SupportNew-style Signal and Slot Support更加pythonic(并且更不容易出错) - 但我不知道它是否适用于ActiveX控件。