Mise en oeuvre de la bibliothèque wxPython

Présentation de wxWidget

Qu’est-ce que wxWidget ?

wxWidgets anciennement nommée wxWindows est une bibliothèque multiplateforme. Développée au départ par Julian Smart en 1992 à « Artificial Intelligence Applications Institute », elle s'est enrichie de plusieurs versions passant par l'utilisation de X11, Motif ou GTK+ pour les systèmes UNIX, MS Windows ou MAC OS. Elle est réalisée sur la licence LGPL permettant une utilisation libre ou commerciale sans avoir besoin de fournir les sources des applications. La particularité principale par rapport aux bibliothèques similaires telles Qt ou java (au sens langage + plateforme) est d'utiliser au maximum les contrôles natifs du système sur lequel elle est installée.

Présentation de wxPython

Qu’est-ce que wxPython ?

wxPython est une bibliothèque sous Python qui est adapté de wxWidget. L’application est beaucoup plus simple à installer que wxWidgets. C’est sur celle-ci que nous allons travailler.

Comment l’installer ?

Sous Windows

Pour commencer il va falloir télécharger et installer Python pour Windows. Je vous conseille Python2.7 pour commencer avec wxPython disponible ici.

En ce qui concerne wxPython je vous laisse un lien et choisir la version la plus récente. https://sourceforge.net/projects/wxpython/files/wxPython/.

/ ! \ Faites bien attention, personnellement mon Python 2.7 est en 32 bits, regardez bien lequel vous choisissez.

Lorsque vous aurez fait tout ça, lancez Python dans votre barre de recherche Windows.

Et faite un petit test dans la console, écrivez « import wx », si la console ne vous renvoi pas d’erreur (voir la capture d’écran ci-dessous) c’est que la lib est bien installée !

Sous Linux

Il faut tout d’abord vérifier que Python 2.7 est bien installé.

Ensuite, pour obtenir wxPython sous linux il nous faut en premier lieu installer pip à l’aide de la commande

« sudo apt-get install python-pip »

Maintenant que ceci est installé nous allons pouvoir télécharger wxPython à l’aide de pip en saisissant la commande

« pip install -U wxPython »

Pour fini, il ne nous reste plus qu’à tester si tout s’est bien installé. Pour ce faire lancez python dans le terminal et écrivez « import wx ». Si vous avez la même chose que sur la capture d’écran ci-dessous c’est que tout fonctionne !

Des exemples de code

Maintenant que tout fonctionne on va pouvoir se mettre à programmer. Nous allons analyser quelques morceaux code afin que vous puissiez comprendre son fonctionnement.

Voici un bout de code sous wxPython qui permet simplement d’afficher une fenêtre avec écrit « Hello world ». J’ai déjà rajouté une barre de statut en bas vu que le code n’est pas bien gros.

Il n’y a une seule barre de statut par fenêtre, c’est pour cela qu’elle s’est pas déclarée dans une variable puis rajouté. Il suffit d’écrire « self.CreateStatusBar() ». On peut changer ce qui est écrit dans la barre de statut en utilisant la fonction « SetStatusText ».

Voilà ce que donne le code :

 

Il est également possible de créer des boutons :

Pour le bouton il vous suffit de déclarer une variable avec « wx.Button() » :

unButton = wx.Button(unPanel, label = ‘’labelDuButton’’, pos = (x, y), size = (x, y))

Si on veut créer des événements sur des boutons, il nous faudra une fonction à appeler (ici : CloseButton) et Bind() pour l’affecter à notre bouton. Ont choisi le bouton en donnant le nom de sa variable dans le 3ème paramètre de la fonction Bind().

self.Bind(wx.EVT_BUTTON, self.CloseButton, unButton)

 

Afin de rendre votre programme plus « standard » on peut lui ajouter un menu ! Ce qui donne approximativement ça :

Voici le code pour la barre de menu !

Comme vous pouvez le voir, il faut d’abord déclarer une barre de menu, et déclarer un menu à chaque fois qu’on veut un onglet en haut. Personnellement j’en ai choisi 3 pour avoir un code le plus semblable à quelque chose de fini, mais pour autant qui reste simple. On ajoute des options aux menus, et on n’oublie pas d’ajouter nos menus à notre barre de menu, sinon elle restera vide, ce serait dommage.

Si on veut créer des événements sur des options (ici Ajouter > Text), il nous faudra une fonction à appeler (ici : addText) et Bind() pour l’affecter à une option. Ont choisi l’option grâce à l’ID qu’on lui a choisi.

self.Bind(wx.EVT_MENU, self.addText, id = 301)

Pour finir on set notre barre de menu au panel que l’on souhaite et voilà !

 

Aller un petit dernier pour la route, les spinners :

Voici le code de notre spinner :

Pour déclarer un Spinner il faut utiliser :

wx.SpinCtrl(self.unPanel, 101, ‘’ ‘’, (40, 40), (90, -1))

Pour définir son minimum et son maximum il faut utiliser :

SetRange(1, 100)

Et si vous voulez lui définir une valeur de départ on utilisera :

SetValue(60)

 

Le gros avantage de cette lib, est qu’elle utilise au maximum les contrôles natifs. Du coup elle s’adapte en fonction du système ce qui la rend très intéressante pour les développeurs.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *