Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
None
-
5.15.1
-
None
-
Windows 10 64bit
Anaconda3 Python 3.8.3 64bit
PySide2 5.15.1
PyQt5 5.15.1
-
-
27aa24e589ca293298f88f3fd0d027d9f95dedc5 (pyside/pyside-setup/dev) 90c19c81fa9de2bc300ef4692b820dbccee6f428 (pyside/pyside-setup/5.15)
Description
I cannot find a way to invoke this overloaded case of dynamicCall, with list type argument:
https://doc.qt.io/qt-5/qaxbase.html#dynamicCall-1
Besides, no api docs available on QtAxContainer, about how to use dynamicCall, possibly with the new flags argument:
https://doc.qt.io/qtforpython/modules.html
Below is a script that I used for testing Pyside2's behavior:
PyQt5 worked as expected on case 2, while PySide2 does not...
import os import sys if False: from PyQt5.QtWidgets import QApplication from PyQt5.QAxContainer import QAxWidget else: import PySide2 # fix for the case that anaconda qt 5.9.7 is in PATH if hasattr(PySide2, '__file__') and 'QT_QPA_PLATFORM_PLUGIN_PATH' not in os.environ: qt_qpa_platform_plugin_path = os.path.join(os.path.dirname(PySide2.__file__), 'plugins', 'platforms') os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = qt_qpa_platform_plugin_path from PySide2.QtWidgets import QApplication from PySide2.QtAxContainer import QAxWidget app = QApplication(sys.argv) excel = QAxWidget('Excel.Application') excel.setProperty('Visible', True) workbooks = excel.querySubObject('WorkBooks') workbooks.dynamicCall('Add') workbook = excel.querySubObject('ActiveWorkBook') help(QAxWidget.dynamicCall) # PySide2 gives: """ Help on method_descriptor: dynamicCall(...) dynamicCall(self, name: bytes, v1: typing.Any = Invalid(typing.Any), v2: typing.Any = Invalid(typing.Any), v3: typing.Any = Invalid(typing.Any), v4: typing.Any = Invalid(typing.Any), v5: typing.Any = Invalid(typing.Any), v6: typing.Any = Invalid(typing.Any), v7: typing.Any = Invalid(typing.Any), v8: typing.Any = Invalid(typing.Any)) -> typing.Any dynamicCall(self, name: bytes, vars: typing.Sequence[typing.Any]) -> typing.Any dynamicCall(self, name: bytes, vars: typing.Sequence[typing.Any], flags: int) -> typing.Any """ # check method usage: https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.saveas sig = 'SaveAs(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)' args = [ os.path.join(os.getcwd(), 'filename.xlsx'), 51, '', '', False, False, 1, 2, False, False, False, False, ] flags = 0 # just setting to 0 since I have no idea # 1) too many arguments error, due to: https://doc.qt.io/qt-5/qaxbase.html#dynamicCall # workbook.dynamicCall(sig, *args) # 2) unexpected behavior, works as if it was: # # for arg in args: # workbook.dynamicCall(sig, arg) # # but expected to behave like: https://doc.qt.io/qt-5/qaxbase.html#dynamicCall-1 workbook.dynamicCall(sig, args) # 3) similar behavior like previous case: # # for arg in args: # workbook.dynamicCall(sig, arg, flags) # # also cannot find documentation on how to properly set flags??? workbook.dynamicCall(sig, args, flags)
Attachments
Issue Links
- resulted in
-
PYSIDE-1435 AxWidget: dynamicCall malfunction
- Reported