# PyQt/PyQt versus wxPython

Dans la partie qui suit nous allons tenter d'effectuer un petit comparatif objectif entre les librairies wxPython et PyQt. Ces deux librairies permettent de créer facilement des interfaces graphiques en Python, mais en se basant sur des principes différents. La première différence que l'on remarque entre les librairies Qt et wxWidgets (les libraires C++ de base) concerne la documentation de ces librairies. En effet, Qt semble plus professionnelle car il y a une société derrière, tandis que wxWidgets est une librairie communautaire.
Par conséquent, la documentation de Qt est bien plus fournie et complète que celle de wxWidgets. Néanmoins, ni PyQt ni wxPython ne disposent à l'heure actuelle de véritable documentation de référence, car il est extrêmement simple de passer de C++ à Python. Il faut toutefois noter que la documentation de wxWidgets comporte certaines informations sur wxPython, lorsque par exemple les méthodes de wxPython sont quelque peu différentes de celles en C++. De plus, il existe un livre dédié entièrement à wxPython.
Qt dispose d'un système de gestion des événements extrêmement puissant et pratique. En effet, le système de signaux et slots permet d'affecter à un événement (signal) de multiples actions (slot), et une action peut être activée par de multiples événements. WxPython ne permet malheureusement pas, pour un même événement, d'appeler plusieurs méthodes.
À l'inverse de wxWidgets qui n'est qu'une librairie d'interface, Qt propose un ensemble de classes autre que la gestion d'interfaces. Citons entre autre les bases de données, la gestion de XML, la possibilité de faire des connexions réseaux, etc. Qt est donc bien plus qu'une simple librairie d'interface. Cependant, elle garde sa simplicité d'utilisation.
wxWidgets met à disposition du programmeur un système très performant concernant le placement des éléments graphiques. Les sizers, qui sont un peu difficile à appréhender au départ, permettent de gérer facilement le positionnement et le redimensionnement des éléments, en définissant par exemple que les éléments doivent garder leurs proportions, que certains éléments peuvent s'agrandir ou se rétrécir jusqu'à une certaine limite, etc. De telles possibilités existent aussi en Qt, cependant avec l'utilisation du Qt Designer, il devient très simple de créer et de tester l'interface d'une application.
Nous avons aussi constaté que l'installation de wxPython semble plus simple que PyQt. Cela est certainement dû au fait que la librairie Qt est beaucoup plus bas niveau que wxWidgets. Qt dispose de ces propres routines d'affichage, tandis que wxWidgets se base sur ce qui est fourni par le système d'exploitation sur lequel il tourne.
Néanmoins, pour conclure ce petit comparatif, il ne semble pas qu'une librairie soit meilleure que l'autre. Tout dépend de ce que l'on désire faire. Pour une application avec uniquement une interface graphique la librairie wxPython ira très bien, cependant si on désire faire une application plus complète, avec par exemple la gestion du réseau, PyQt sera un meilleur choix. Notez cependant qu'il est tout à fait possible de créer une application interagissant avec le réseau en wxPython, Python disposant de classes permettant de gérer le réseau. Le seul avantage de Qt sur ce point et qu'il n'y a besoin que d'une seule librairie. Avec les inconvénients que cela génère, comme la lourdeur du chargement, même si Qt en version 4 résout ce problème en découpant la librairie en modules.