Bonjour,
Voici mon problème : j'ai créé une application graphique sous forme d'une fenêtre principale de type dialogue où l'utilisateur coche des options. Lorsque l'on clique sur sur OK, on lance une classe Progressdialog chargée du traitement (long!) des fichiers. Je voudrais, lorsque le traitement est terminé afficher un message pour informer du résultat.
Mais ce messagebox ne s'affiche qu'une fraction de seconde et l'application se ferme.
Comment faire pour qu'il reste affiché avant de valider la sortie.
Je pense que le problème vient de ce que je suis obligé(?) d'appeler QtGui.QApplication.quit() avant de lancer la progressdialog.

J'ai lu le très bon tuto de Tyrtamos mais cela concerne l'utilisation de thread qui ne m'est pas familière et une progressbar, or je souhaiterais une progressdialog.

Ci-joint les fractions de code pertinentes :

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
class Ui_Dialog(object):
 
 
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(600, 500)
        Dialog.setWindowTitle(_fromUtf8("PersonnaLiseur V 0.1"))
        Dialog.setStatusTip(_fromUtf8(""))
        Dialog.setAccessibleName(_fromUtf8(""))
        Dialog.setAccessibleDescription(_fromUtf8(""))
/.../
#slot de dialogue accepté:
            QtGui.QApplication.quit()
            job.ProgressDialog(bookdb, self.options_texte, nb)
            msg = QtGui.QMessageBox(QtGui.QMessageBox.Warning, 'Certains fichiers n\'ont pu être traités', 'Consultez le fichier', \
                                     QtGui.QMessageBox.Ok)
            msg.setWindowModality(QtCore.Qt.ApplicationModal)
            msg.exec_()
 
/.../
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ui = Ui_Dialog()
    Main = QtGui.QDialog()
    ui.setupUi(Main)
    Main.show()
    sys.exit(app.exec_())
et ma classe progressdialog:
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
class ProgressDialog(QProgressDialog):
 
    def __init__(self, bookdb, options_texte, nb):
        QProgressDialog.__init__(self, None, None, 0, nb)
        self.setWindowTitle('Traitement des fichiers')
        self.nb = nb
        self.badbook = []
        self.setMinimum(0)
        self.setMaximum(self.nb)
        self.setMinimumWidth(500)
        QTimer.singleShot(0, self.sauvegarde)
        self.exec_()
        self.distribujob(options_texte, nb) #traitement des fichiers
/.../
 def do_close(self, nb, texte):
        # shutil.rmtree(os.path.join(LECHEMIN + '/tmp'), ignore_errors=True)
        self.setValue(nb)
        self.hide()
        return