Я хочу поместить файл .exe в pyqt, который разработан с использованием конструктора Qt. Мне удалось показать видео, снятое openCV. Однако на этот раз файл видеозахвата конвертируется в исполняемый файл. Я хочу запустить файл .exe и показать результат внутри пользовательского интерфейса pyqt. Я пробовал использовать модуль os для открытия исполняемого файла, в котором он открывается, но его нет внутри созданного виджета Qlabel. Есть ли способ поместить его в пользовательский интерфейс? Спасибо
Обновление: я провел исследование, но все, что я вижу, это Qt на C++
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QWindow *window = QWindow::fromWinId(125829124);
QWidget *widget = QWidget::createWindowContainer(window);
widget->setParent(this);
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(widget);
this->setLayout(layout);
}
Я пытался использовать этот код, но окно все равно не находится внутри пользовательского интерфейса.
class Program(QMainWindow):
def __init__(self):
super().__init__()
exePath = "/home/liva/app.exe"
subprocess.Popen(exePath)
hwnd = 3800003 #the window id of the app.exe
self.window = QWindow.fromWinId(hwnd)
self.setWindowFlags(Qt.FramelessWindowHint)
self.widget = QWidget.createWindowContainer(self.window,self)
self.widget.resize(300, 300)
self.widget.move(400, 300)
print(self.window.parent())
layout = QVBoxLayout()
layout.addWidget(self.widget)
self.setLayout(layout)
self.setGeometry(100, 100, 900, 900)
self.setWindowTitle('UI')
self.show()
Теперь он работает. Просто нужно исправить идентификатор окна и получить его вручную.




