avec PyQt5 comment redemarer (restart) mon application script avec clique bouton
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...
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
J'ai besoin d'un code qui redémarre complètement le programme en cliquant sur le bouton de redémarrage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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_())
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
Merci à tous, le problème a été résolu par le code de Mr: tyrtamos
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager