Как заставить кнопку менять фон рабочего стола на PyQt

На github нашел статью как поменять фон рабочего стола на видео фон.

Код PyQt

from PyQt5 import QtWidgets
from script import Ui_MainWindow
import sys

class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
ui.pushButton.clicked.connect( ) #Что написать чтобы поменять фон?????

app = QtWidgets.QApplication([])
application = mywindow()
application.show()

На github суть была - прописать команду в cmd, находясь директории файла:

wp run mpv --wid=66566 Test.wmv --loop=inf --player-operation-mode=pseudo-gui --force-window=yes --no-audio

И фон менялся.

Можете подсказать как связать это и кнопки из PyQt, или хотя-бы статью на гите с похожей программой?


Ответы (1 шт):

Автор решения: Alexander Chernin

Можно воспользоваться классом QProcess.

from PyQt5 import QtWidgets
from script import Ui_MainWindow
from PyQt5.QtCore import QProcess
import sys

class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        ui.pushButton.clicked.connect(self.runWallpaper)

    def runWallpaper(self):
        process = QProcess()

        args = ["run", "mpv", "--wid=66566", "Test.wmv", "--loop=inf", "--player-operation-mode=pseudo-gui", "--force-window=yes", "--no-audio"]

        # Приложение 'wp' должно быть прописано глобально, либо к нему должен быть указан путь
        process.start("wp", args);

        # ИЛИ
        # process.start("<путь/к/приложению/>wp", args);
        # Ждем завершения работы процесса 10 секунд
        process.waitForFinished(10000)
        

app = QtWidgets.QApplication([])
application = mywindow()
application.show()
→ Ссылка