Ich habe pyQt4 verwendet. Ich möchte pyQt5 konvertieren. aber ich konnte nicht old-style signal and slot in pyQt5 verwenden, weil pyQt5 nur new-style signal and slot unterstützt. Daher konnte ich keine Ereignisse von ActiveX empfangen.Wie erhalten Sie ActiveX-Ereignisse in pyQt5?
Bitte geben Sie mir eine Lösung.
Dieser Code ist pyQt4 Version.
from PyQt4.QtCore import SIGNAL, QObject
from PyQt4.QAxContainer import QAxWidget
class ActiveXExtend(QObject):
def __init__(self, view):
super().__init__()
self.view = view
self.ocx = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
# receive ActiveX event.
self.ocx.connect(self.ocx, SIGNAL("OnReceiveMsg(QString, QString, QString, QString)"), self._OnReceiveMsg)
# event handler
def _OnReceiveMsg(self, scrNo, rQName, trCode, msg):
print("receive event")
Ich versuche, pyQt5 zu konvertieren.
from PyQt5.QtCore import QObject
from PyQt5.QAxContainer import QAxWidget
class ActiveXExtend(QObject):
def __init__(self, view):
super().__init__()
self.view = view
self.ocx = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
# receive ActiveX event.
# old-style is not supported.
# self.ocx.connect(self.ocx, SIGNAL("OnReceiveMsg(QString, QString, QString, QString)"), self._OnReceiveMsg)
# event handler
def _OnReceiveMsg(self, scrNo, rQName, trCode, msg):
print("receive event")
nur ein bisschen zu raten, aber würden Sie [verbinden Slots nach Name] in der Lage sein (http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html#connecting-slots-by-name) ? – ekhumoro