# -*- coding: utf-8 -*- import sys try: from PySide6.QtCore import qVersion, QLibraryInfo, QStandardPaths, QUrl from PySide6.QtWidgets import QApplication, QDialog, QFileDialog, QVBoxLayout, QPushButton, QWidget from PySide6.QtAxContainer import QAxWidget except ImportError: from PySide2.QtCore import qVersion, QLibraryInfo, QStandardPaths, QUrl from PySide2.QtWidgets import QApplication, QDialog, QFileDialog, QVBoxLayout, QPushButton, QWidget from PySide2.QtAxContainer import QAxWidget def play_a_media( w: QWidget, ax_w: QAxWidget, ): file_dialog = QFileDialog(w, "Open File") file_dialog.setAcceptMode(QFileDialog.AcceptOpen) file_dialog.setFileMode(QFileDialog.ExistingFile) d = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] file_dialog.setDirectory(d) file_dialog.setMimeTypeFilters({ "application/octet-stream", "video/x-msvideo", "video/mp4", "audio/mpeg", "audio/mp4" }); if file_dialog.exec_() != QDialog.Accepted: return path = file_dialog.selectedUrls()[0] print('Playing ', path.toString()) ax_w.dynamicCall('SetURL', [path.toString()]) current_media = ax_w.querySubObject("currentMedia") if current_media: title = current_media.dynamicCall("getItemInfo(const QString&)", "title") w.setWindowTitle(title) else: print('Unable to retrieve currentMedia subObj') if __name__ == "__main__": print(sys.version, '\n', QLibraryInfo.build()) app = QApplication(sys.argv) w = QWidget() w.setWindowTitle(qVersion()) layout = QVBoxLayout(w) ax_w = QAxWidget() layout.addWidget(ax_w) if not ax_w.setControl('{6BF52A52-394A-11d3-B153-00C04F79FAA6}'): print('Failed to load') sys.exit(-1) btn = QPushButton() layout.addWidget(btn) btn.setText('Play') btn.clicked.connect(lambda: play_a_media(w, ax_w)) w.resize(800, 600) w.show() sys.exit(app.exec_())