1. Livres & vidéos
  2. Python
  3. Les interfaces homme-machine
Extrait - Python Apprenez à développer des projets ludiques (4e édition)
Extraits du livre
Python Apprenez à développer des projets ludiques (4e édition) Revenir à la page d'achat du livre

Les interfaces homme-machine

L’interaction homme-machine

Nous présentons comment construire une application fenêtrée. Ce type d’application est différent des applications console. Les applications console exécutent un programme, font ce qu’elles doivent faire et s’arrêtent lorsqu’elles ont fini. Elles peuvent interagir avec l’utilisateur en lui demandant d’entrer une information au clavier, mais cela est prévu dans le code. Le flux de traitement se déroule de manière linéaire du début jusqu’à la fin.

Les applications fenêtrées sont interactives, on peut cliquer sur un bouton, cocher une case, faire défiler l’affichage en faisant glisser un ascenseur ou ne rien faire ! Il n’est pas possible de connaître le flux de contrôle de ce type de programme, car ce sont les actions de l’utilisateur qui vont finalement déclencher telle ou telle fonction.

L’affichage visuel permet à l’utilisateur d’interagir avec le programme et la machine, d’où le nom d’interaction homme-machine (IHM). Le terme anglophone est Graphical User Interface (GUI). Une application fenêtrée qui ne reçoit pas d’évènements de l’utilisateur reste en attente, elle ne consomme pas de ressources CPU.

Nous allons présenter les différents composants servant à construire une IHM et ensuite nous vous présenterons quelques projets. Nous avons choisi la librairie Tkinter, la raison principale étant qu’elle est installée par défaut avec Python et qu’étant assez ancienne, beaucoup d’informations sont disponibles à son sujet sur Internet. Elle n’est pas la librairie la plus high-tech et sa syntaxe n’est pas toujours homogène d’un élément à l’autre. Cependant, elle est facile d’accès et remplit 98 % des besoins, elle convient donc à l’essentiel de vos usages. Il existe beaucoup d’autres librairies d’interface comme PyQt, PySide ou encore wxPython… L’avantage indéniable est que toutes ces librairies, y compris Tkinter, sont multiplateformes, PC ou Mac, ainsi votre code fonctionnera sur n’importe quelle machine.

1. Le nerf de la guerre :...

Les tracés scientifiques

Nous vous proposons d’utiliser la librairie Matplotlib pour tracer des fonctions en Python. Cette librairie a dû être installée si vous avez suivi le chapitre Installer l’environnement Python. Sinon, veuillez vous y reporter.

1. Tracer des fonctions

Le tracé d’une fonction sur les calculatrices scientifiques ou sur les ordinateurs requiert l’échantillonnage de la fonction sur un certain nombre de points. Ainsi, comme nous le ferions pour un tracé sur une feuille, nous choisissons certaines valeurs de x et nous calculons les valeurs f(x) correspondantes afin de déterminer certains points (x,f(x)) de la courbe. Le tracé est effectué en reliant ces différents points un à un.

Nous allons tracer la courbe f(x) = x². Pour cela, il faut d’abord choisir plusieurs valeurs pour les abscisses. Pour simplifier les choses, nous pouvons choisir des valeurs entre deux bornes avec un intervalle régulier comme X = [-1, 0, 1, 2, 3, 4]. Ensuite, il suffit de calculer les valeurs de f(x) correspondantes et de les stocker dans une liste Y = [1, 0, 1, 4, 9 ,16]. Ainsi, pour tracer l’échantillonnage de la fonction y=x², nous écrivons :

import matplotlib.pyplot as plt 
 
X = [-1, 0, 1, 2, 3, 4] 
Y = [1, 0, 1, 4, 9 ,16] 
 
plt.plot(X,Y) 
plt.show() 

Voici le tracé obtenu :

images/06RI47.png

Si vous oubliez la commande plt.show(), la fenêtre de graphique ne s’ouvrira pas, même si votre code est correct. Ce n’est pas un bogue, c’est un oubli !

La ligne import matplotlib.pyplot as plt permet d’importer la sous-librairie Pyplot de Matplotlib et de l’utiliser sous le nom plt dans le code. Cela évite de devoir taper à chaque fois matplotlib.pyplot.mafonction(), ce qui est un peu long. Vous pouvez donc utiliser : plt.mafonction().

Nous reconnaissons la position des points que nous avons calculés car ils correspondent aux endroits sur la courbe où se situent des cassures. Entre deux points, le logiciel dessine un segment, ce qui donne cet air "cabossé" à la courbe. Notre échantillonnage est médiocre, car nous avons pris vraiment peu de points. Cela dit, cela est suffisant pour reconnaître la forme de la parabole.

Pour générer une liste d’abscisses...