2 votes

pourquoi l'application s'affiche-t-elle après la commande sys.exit ?

Je suis ce tutoriel :

http://zetcode.com/tutorials/pyqt4/firstprograms/

et dans le tout premier exemple, je ne comprends pas pourquoi l'application ne s'affiche qu'après la commande :

sys.exit(app.exec_())

Aussi, j'ai modifié légèrement le code pour tester les choses

import sys
from PyQt4 import QtGui

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    w = QtGui.QWidget()
    w.resize(250,150)
    w.move(300,300)
    w.setWindowTitle("Title")
    w.show()
    sys.exit(app.exec_())

Si je l'exécute dans le terminal et que je commente la dernière ligne, la fenêtre ne s'affichera qu'après l'exécution de la dernière ligne.

Je ne comprends pas bien ce que fait la dernière ligne.

EDIT :

Je suis également confus quant à la raison pour laquelle il n'y a pas une référence de app y w Je m'attendais à une sorte d'indication que w est un enfant ou quelque chose de app .

Je l'exécute dans Spyder et un interpréteur IPython.

4voto

Pavel Anossov Points 23610

C'est l'équivalent de

status = app.exec_()   # run app, show window, wait for input
sys.exit(status)       # terminate program with a status code returned from app

3voto

Brendan Long Points 24372

La dernière ligne est constituée de deux fonctions. La première exécute app.exec_() (qui affiche la fenêtre principale de votre application), puis lorsque cette fonction se termine, elle transmet la valeur de retour comme paramètre à la fonction sys.exit qui met fin au programme et envoie la valeur de retour au système d'exploitation (vous pouvez voir cela sur les systèmes *nix avec l'option echo $? après la fin du programme).

La raison pour laquelle il ne sort pas immédiatement est que Python ne peut pas exécuter sys.exit jusqu'à ce qu'il connaisse la valeur du paramètre, et il ne le saura que lorsque app.exec_() finitions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X