avec PyQt5 comment redemarer (restart) mon application script avec clique bouton
Version imprimable
avec PyQt5 comment redemarer (restart) mon application script avec clique bouton
Bonjour rabeh.ram,
sans un code source minimal et un peu plus d'explications sur ce que tu veux faire ça va être dur de pouvoir t'aider...
Tu veux créer une fenêtre dans laquelle un bouton permettrait de restart le programme entier ?
Bonjour,
Si tu ne termines pas les fils de discussion que tu crées, alors que des personnes ont pris la peine de te répondre, tu risques fort ne ne plus avoir de réponse...
J'ai besoin d'un code qui redémarre complètement le programme en cliquant sur le bouton de redémarrage
Pièce jointe 562073
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(461, 263) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(30, 80, 131, 41)) self.pushButton.setObjectName("pushButton") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "Redémarrer")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())
Salut,
Vous pouvez envisager de démarrer votre programme avec subprocess.check_call.
Lorsque çà se termine vous examinez le status retourné et vous redémarrez ou pas.
- W
Bonjour,
Je propose plutôt l'une des fonctions os.exec* (voir ici: https://docs.python.org/fr/3/library/os.html#os.execl).
L'avantage est que le nouveau programme lancé prend la place du programme qui lance, et ne crée pas un nouveau processus (et donc ne retourne pas au programme initial!).
Il y a différentes versions, et on peut par exemple ajouter un dictionnaire des variables d'environnement.
Comme on est dans le forum PyQt, voilà un petit programme graphique qui se relance à chaque clic sur le bouton:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #!/usr/bin/python3 # -*- coding: utf-8 -*- import sys import os from PyQt5 import QtWidgets ############################################################################# class Fenetre(QtWidgets.QWidget): #======================================================================== def __init__(self, parent=None): super().__init__(parent) self.resize(400, 300) self.bouton = QtWidgets.QPushButton("Redémarre le programme", self) self.bouton.clicked.connect(self.clictest) layout = QtWidgets.QGridLayout() layout.addWidget(self.bouton, 0, 0) self.setLayout(layout) #======================================================================== def clictest(self): """redémarre le programme """ os.execv(sys.executable, [sys.executable] + sys.argv) ############################################################################# if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) QtWidgets.QMessageBox.information(None, "Attention:", "Nouvelle exécution du programme!") fen = Fenetre() fen.show() sys.exit(app.exec_())
Merci à tous, le problème a été résolu par le code de Mr: tyrtamos