11. Conclusion
Dans ce chapitre et dans les deux précédents, vous avez pu découvrir comment
programmer avec le framework Graphics View en PyQt. Vous avez appris les concepts
de scène, élément et vue ; vous avez utilisé les classes QGraphicsScene,
QGraphicsItem et QGraphicsView comme briques de base pour construire des
applications graphiques simples. Vous avez constaté que beaucoup de fonctions
standards pouvaient s'implémenter facilement, parfois même en une seule ligne de
code. Enfin, si vous étiez soucieux des performances et des temps de réponse, vous
avez pu constater que le couple Python/PyQt s'en sort finalement très bien.
Pour terminer, voici quelques conseils pour aller plus loin.
Avant de programmer une fonction, lisez la documentation ou consultez un moteur
de recherche pour voir si cette fonction n'est pas déjà proposée par une classe du
framework. C'est particulièrement vrai si la fonction est simple ou standard : nous
l'avons vu notamment avec le glisser/déposer et la sélection par lasso.
On a présenté les différents systèmes de coordonnées (scène/vue) ainsi que les
coordonnées relatives parent/enfants. Si cela peut sembler compliqué au début, on
constate qu'à l'usage ces différents systèmes simplifient l'écriture des
programmes. Il est très rare de devoir programmer des transformations de
coordonnées à la main : il existe un grand choix de méthodes préfixées par map
(mapFromScene, mapToScene, etc.) qui font ce travail.
Pour une application avancée, avec des interactions utilisateur complexes, il est
essentiel de bien réfléchir à la conception. Beaucoup de problèmes peuvent avoir
une solution simple en identifiant bien les classes ainsi que les relations d'héritage
et de composition. Dans une application bien conçue, les corps des méthodes
événementielles surchargées (mousePressEvent, mouseMoveEvent, etc) sont très
simples et comportent peu de branches if. Typiquement, pour les éléments de la
scène, on définira plusieurs classes qui héritent de QGraphicsItem ; chaque
élément réagira à sa manière aux actions de l'utilisateur. Le framework est conçu
pour être étendu ; il ne faut pas s'en priver, surtout en Python où les mécanismes
orientés objet sont simples à maîtriser.
262
Précédent

- 263/494

Suivant