Как в PyQt5 запустить файл с помощью QProcess?
Как в PyQt5 запустить файл с помощью QProcess?
При нажатии на кнопку ничего не происходит.
test_QProsess.py
import sys
import subprocess
from PyQt5 import Qt
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton
from PyQt5.QtCore import QProcess
class StartProcess(QMainWindow):
def __init__(self):
super(StartProcess, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle('Главное окно')
self.sprocess()
def sprocess(self):
btn_run = QPushButton('Пуск', self)
filepath = "hello.py"
btn_run.clicked.connect(lambda checked, arg=filepath: self.execute(arg))
self.show()
def execute(self, filepath):
QProcess.startDetached(filepath)
if not QApplication.instance():
app = QApplication(sys.argv)
else:
app = QApplication.instance()
GUI = StartProcess()
app.exec_()
hello.py
print('Привет!')
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
# ??? import subprocess
# ??? from PyQt5 import Qt
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton
from PyQt5.QtCore import QProcess
class StartProcess(QMainWindow):
def __init__(self):
super(StartProcess, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle('Главное окно')
self.sprocess()
def sprocess(self):
btn_run = QPushButton('Пуск', self)
filepath = "hello.py"
btn_run.clicked.connect(lambda checked, arg=filepath: self.execute(arg))
def execute(self, filepath):
# QProcess.startDetached(filepath)
QProcess.startDetached(f"python {filepath}") # !!!
if __name__ == "__main__":
app = QApplication(sys.argv)
w = StartProcess()
w.show()
sys.exit(app.exec_())
