Aller au contenu

Module Robot

Et oui, le robot peut être considéré comme un module à part entière vu qu’il a ses propres méthodes qui lui sont attachées, même si vous verrez qu’il est impossible de les utiliser à proprement parler sans utiliser le module Fenêtre.

Pour utiliser le module Robot on vas directement utiliser l’objet Robot que l’on crée au début

robot = Robot()
    ^ celui-ci

Ce module vous donne accès à des méthodes permettant la gestion globale du programme (début du programme, sortie du programme), mais aussi à une première manière de gérer les événements (interaction utilisateur -> robot).

Warning

Il est fortement conseillé d’avoir au moins ouvert la fenêtre “voir module fenêtre — window” avant de continuer à lire cette section.

Démarrer le robot

Une fois le robot créé (démarré), il passe dans l’état actif ; dans cet état, le robot peut être utilisé lui et tous ses modules.

Robot()

from pybot import Robot
robot = Robot()

Éteindre le robot

Si l'on veut passer le robot dans l’état inactif (ce qui équivaut à éteindre le robot), on utilise la méthode desactiver() (fr) - deactivate() (en).

desactiver() - deactivate()

robot.desactiver()

ou alors

robot.deactivate()

Après l’appel de cette méthode, le robot change son état en inactif (il deviendra donc inutilisable).

Vérifier l’état du robot

On peut obtenir l’état du robot grâce à la méthode est_actif() (fr) - is_active() (en).

est_actif() - is_active()

robot.est_actif()

ou alors

robot.is_active()

Note

est_actif renvoi True si le robot est actif sinon il renvoie False.

Cette méthode peut être utile à l’élaboration d’une boucle While qui déclencherait des actions tant que le robot est actif.

Exemple :

while robot.est_actif() :
    robot.fenetre.actualise_affichage()

Faire dormir le robot

Il est parfois utile de ralentir l'exécution du programme en lui faisant faire des pauses. La méthode dort(secondes : int) (fr) - sleep(secondes : int) (en) le permet, il suffit de passer en paramètre le nombre de secondes à attendre.

dort(int) - sleep(secondes)

secondes = 2
robot.dort(secondes)

ou alors

secondes = 2
robot.sleep(secondes)

Les attributs du robot

Le robot possède un moyen de contenir les boutons et les zones de texte que l’on peut créer avec le module Fenêtre.

Voir la documentation du module fenêtre avec celle des boutons et des zones de texte pour plus d'informations.

Ajouter un bouton aux attributs du robot

Pour ajouter un bouton aux attributs du robot il faut suivre les étapes suivantes :

boutons = robot.attributs.boutons # On récupère l'endroit où sont stockés les boutons dans le robot
boutons.nom_du_bouton = robot.fenetre.creer_bouton("nom_du_bouton", 100, 100, 100, 100) # On crée un bouton et on l'ajoute aux attributs du robot.

Note

nom_du_bouton est le nom que l’on veut donner au bouton.
C’est ce nom qui sera utilisé pour accéder au bouton depuis les attributs du robot. Veillez à ne pas mettre d’espace dans le nom du bouton et gardez le nom simple.

Accéder à un bouton depuis les attributs du robot

Pour accéder à un bouton depuis les attributs du robot il faut suivre les étapes suivantes :

boutons = robot.attributs.boutons # On récupère l'endroit où sont stockés les boutons dans le robot.
boutons.nom_du_bouton # On accède au bouton grace à son nom.

Note

nom_du_bouton est le nom que l’on a donné au bouton lors de sa création. boutons.nom_du_bouton est un objet de type bouton sur lequel on peut appliquer les méthodes liées au bouton.

Ajouter une zone de texte aux attributs du robot

Pour ajouter une zone de texte aux attributs du robot il faut suivre les étapes suivantes :

zones_de_texte = robot.attributs.zones_de_texte # On récupère l'endroit où sont stockées les zones de texte dans le robot.
zones_de_texte.nom_de_la_zone_de_texte = robot.fenetre.creer_zone_de_texte("nom_de_la_zone_de_texte", 100, 100, 100, 100) # On crée une zone de texte et on l'ajoute aux attributs du robot.

Note

nom_de_la_zone_de_texte est le nom que l’on veut donner à la zone de texte.
C’est ce nom qui sera utilisé pour accéder à la zone de texte depuis les attributs du robot. Veillez à ne pas mettre d’espace dans le nom de la zone de texte et gardez le nom simple.

Accéder à une zone de texte depuis les attributs du robot

Pour accéder à une zone de texte depuis les attributs du robot il faut suivre les étapes suivantes :

zones_de_texte = robot.attributs.zones_de_texte # On récupère l'endroit où sont stockées les zones de texte dans le robot.
zones_de_texte.nom_de_la_zone_de_texte # On accède à la zone de texte grace à son nom.

Note

nom_de_la_zone_de_texte est le nom que l’on a donné à la zone de texte lors de sa création. zones_de_texte.nom_de_la_zone_de_texte est un objet de type zone de texte sur lequel on peut appliquer les méthodes liées à la zone de texte.

Autre

Ces attributs sont utiles pour stocker les boutons et les zones de texte que l’on crée avec le module Fenêtre. Mais ils peuvent aussi être utilisés pour stocker d’autres objets, variables, etc.

Pour cela, il suffit de créer un attribut dans l’objet attributs du robot.

robot.attributs.nom_de_l_attribut = "valeur de l'attribut"

pour ensuite y accéder avec

robot.attributs.nom_de_l_attribut

Interaction avec l’utilisateur

En plus de tout cela, le robot offre une première manière assez rudimentaire pour gérer les interactions avec l’utilisateur.

On appelle cela les événements.

Créer un évènement

Un évènement est une action sur le clavier associée à un nom d'évènement. Nous créons un nouvel évènement avec la méthode ajouter_evenement(touche : str, nom : str) (fr) - add_event(key : str, name : str) (en) en lui passant en paramètre la touche à laquelle on veut associer l’événement et le nom que l’on veut donner à celui-ci.

Ajouter un évènement

robot.ajouter_evenement("echap", "stop")

ou alors

robot.add_event("echap", "stop")

Info

Voir la référence pour voir une liste des touches possible, par exemple la touche du clavier a s'appelera "a". À noter, les touches qui se nomment "espace" et "echap" pour la barre d'espace et la touche d'échappement.

Vérifier un évènement

Une fois un évènement enregistré, il faut vérifier si l’événement se produit ou non.

Pour cela, on a la méthode verifier_evenements() (fr) - check_events() (en) .

Info

La méthode retourne une liste avec les évènements qui viennent d'être exécutés. Il est possible ensuite d'utiliser une vérification avec if… in ... : comme dans l'exemple ci-dessous.

Vérifier les évènements

evenements = robot.verifier_evenements("echap", "stop")
if "stop" in evenements:
    print("stop")

ou alors

evenements = robot.check_events("echap", "stop")
if "stop" in evenements:
    print("stop")

Note

Sans l'appel de cette méthode, la croix de fermeture de la fenêtre ne fonctionnera pas.

Supprimer un évènement

Si on ne veut plus qu’un évènement soit vérifié, il faudra le supprimer.

Pour cela, on a la méthode supprimer_evenement(nom : str) (fr) — delete_event(nom : str) (en) en lui passant le nom de l’événement que l’on veut supprimer..

Supprimer un évènement

robot.supprimer_evenement("stop")

ou alorsdelete_event(nom : str)

robot.delete_event("stop")

Warning

Si plusieurs touches sont attribuées au même évènement, elles seront toutes supprimées de la liste des évènements.

Exemple 2: Utiliser des évènements

Warning

Il est recommandé de ne pas copier l'exemple mais de chercher par vous même des utilisations possibles.

Info

Le robot final n'utilisera pas de clavier mais simplement une intéraction par la voix et par le touché sur écran. Ces évènements par clavier servent principalement à l'apprentissage du code python. Il s'agit d'une période de transition.

from pybot import Robot

robot = Robot()

long = 1024
haut = 800

robot.initialiser_module_fenetre(long, haut)
robot.fenetre.ouvrir_fenetre()

robot.ajouter_evenement("echap", "stop")
while robot.est_actif():
    evenements = robot.verifier_evenements()
    if "stop" in evenements:
        robot.desactiver()
    robot.fenetre.actualiser_affichage()

La webapp

Avant de lancer les modules, il est faut lancer la webapp. Surtout pour le module utilisateur, car il permet de créer, modifier, supprimer des utilisateurs du robot. C'est le serveur qui permettra d'accéder à l'application web et ainsi travailler avec la base de donnée, on utilise pour cela la méthode demarrer_webapp.
Il est aussi possible de configurer le robot depuis un site web, par exemple pour ajouter des élèves à la base de données.

Pour lancer la webapp, il suffit d'appeler la méthode demarrer_webapp() (fr) - init_webapp() (en).

demarrer_webapp()

robot.demarrer_webapp()

ou alors

robot.init_webapp()

Le serveur web se lance et ne bloque pas le programme, on peut donc ensuite s'occuper de programmer le robot.

Info

Le site sera accessible localement, à l'adresse : http://127.0.0.1:5000

Note

Il est possible de configurer le raspberry pi pour faire serveur et rendre le site accessible sur le réseau local pour ainsi se connecter à distance au robot.

Warning

Pour arreter le serveur il faut taper dans le terminal la combinaison au clavier : CTRL+C. Il est important de lancer la webapp avant de lancer tout autre module. Il est possible de lancer les modules sans avoir lancé la webapp, la webapp n'est utile que pour la gestion des utilisateurs avec le module utilisateur.