TorPy
La Tortue Python vernaculaire.
- Présentation
- Téléchargement et installation
- Première séance en classe
- Quelques exemples
- Fonctionnement de TorPy
- Adapter TorPy
- Traduire TorPy dans une autre langue
Présentation
TorPy est une version francisée (mais pouvant être traduite dans toute autre langue) du module turtle de Python.
Inspiré de la tortue Logo, turtle permet d’apprendre à programmer, puisqu’on écrit les instructions que la tortue n’effectuera qu’ensuite.
De plus cela permet de produire de belles figures géométriques.
J’ai écrit TorPy après avoir fait des essais d’utilisation de turtle avec des élèves de collège, et son but est de pallier quelques difficultés rencontrées.
Quelques particularités de TorPy :
- les instructions du module turtle sont traduites en français.
Par exemple on écrit avance(100) au lieu de forward(100) - seules les instructions sont affichées dans la zone de saisie ; le reste du programme Python (shebang, etc) est masqué
- les instructions sont exécutées sans avoir besoin d’être enregistrées au préalable
(mais on peut évidemment enregistrer son fichier) - la liste des instructions disponibles peut être consultée à tout moment ; des exemples d’utilisation de chaque instruction pouvant être copiés-collés
- toute autre instruction Python peut être utilisée pour une utilisation plus avancée (boucles, définitions de fonctions, importations de modules, etc). Voir le paragraphe fonctionnement de TorPy
- le programme peut être facilement adapté à d’autres langues que le Français et il est facile aussi d’ajouter de nouvelles instructions. Voir les paragraphes adapter TorPy et traduire TorPy dans une autre langue
- si le fichier est enregistré, le résultat peut être enregistré en image (format EPS ; mais aussi SVG sous GNU/Linux si pstoedit est installé).
TorPy est un logiciel multiplateforme, libre (licence GNU GPL 3), développé en Python (langage de programmation) et PyQt (ou PySide) pour l’interface graphique.
Téléchargement et installation
Pour fonctionner, TorPy a besoin de
GNU/Linux
- Dépendances
- Python est forcément déjà installé
- il faut aussi PyQt (version 4 ou 5), Tkinter et pstoedit.
Pour Ubuntu, cela donne l’une des commandes d’installation suivantes :- pour Python 2.x et PyQt4 :
sudo apt install python-qt4 python-tk pstoedit
- pour Python 3.x et PyQt4 :
sudo apt install python3-qt4 python3-tk pstoedit
- pour Python 3.x et PyQt5 :
sudo apt install python3-pyqt5 python3-pyqt5.qtwebengine python3-pyqt5.qtsvg python3-tk pstoedit
- pour Python 2.x et PyQt4 :
- TorPy
- téléchargez et décompressez l’archive de TorPy : torpy.tar.gz
- pour lancer TorPy, il suffit de cliquer sur le fichier torpy.pyw à la racine du dossier (ou en console :
python torpy.pyw
) - d’autre part, le menu Fichier → Créer un lanceur vous permettra de créer un fichier torpy.desktop où vous voulez (bureau, menu, …).
Windows
- Dépendances
- pour installer Python 3 et PyQt5, voir la page installer PyQt sur Windows
- TorPy
- téléchargez et installez torpy_setup.exe (installation de TorPy)
- pour lancer le programme, vous trouverez un raccourci dans le menu Démarrer et sur le bureau
- Remarques
Mac OS X
- Dépendances
- pour installer Python 3 et PyQt5, voir la page installer PyQt sur Mac
- TorPy
- téléchargez et décompressez l’archive de TorPy : torpy.tar.gz
- pour lancer TorPy, il suffit
- de cliquer sur le fichier torpy.pyw à la racine du dossier torpy
- OU de lancer en console avec la commande :
python3 torpy.pyw
- OU de déplacer le fichier torpy.pyw sur l’icône du terminal qui se trouve dans le dock (en bas de l’écran)
- Remarque
- si cela ne fonctionne pas il faut modifier manuellement l’application qui va ouvrir torpy.pyw.
Pour cela, sélectionnez le fichier torpy.pyw puis dans le menu fichier, cliquez sur obtenir des informations.
Dans la section ouvrir avec, sélectionnez le Terminal comme application par défaut (ou python launcher).
Voir cette page : How can I change what program opens a certain file on a Mac?
- si cela ne fonctionne pas il faut modifier manuellement l’application qui va ouvrir torpy.pyw.
Sources
- développement chez GitLab.
Première séance en classe
explications Python + Tortue
- programmer, c’est comme indiquer son chemin à quelqu’un : on donne d’abord toutes les instructions.
On va programmer ce que va faire la Tortue - les instructions doivent être donnés dans un langage que la Tortue comprendra.
Le langage de programmation utilisé s’appelle Python.
- programmer, c’est comme indiquer son chemin à quelqu’un : on donne d’abord toutes les instructions.
on lance et on clique sur le bouton
- pourquoi la Tortue ne fait-elle rien ?
- pour fermer la fenêtre on peut cliquer à l’intérieur
premières instructions (indiquées) avance(200) tourneAGauche(90)
terminer seul le rectangle de dimensions 200×150
le point sur quelques trucs
- copier-coller plutôt que de tout écrire
- intérêt de la coloration syntaxique
- liste des instructions et versions courtes (par exemple av au lieu de avance)
2 carrés opposés par un sommet
un triangle équilatéral
en 6° et 5° : une maison simple (carré surmonté d’un triangle équilatéral)
à partir de la 4° : la maison sans lever le crayon (besoin de calculer la diagonale)
Quelques exemples
Les versions ci-dessous ne sont pas celles attendues des élèves (utilisation de fonctions, de variables).
la maison sans lever le crayon
def maison(debut=(0, 0), cote=100, delai=0):
va(debut[0], debut[1])
for i in range(4):
av(cote)
attendre(delai)
tg(90)
attendre(delai)
diagonale = cote * racine(2)
tg(45)
attendre(delai)
avance(diagonale)
attendre(delai)
tg(90)
attendre(delai)
avance(diagonale / 2)
attendre(delai)
tg(90)
attendre(delai)
avance(diagonale / 2)
attendre(delai)
tg(90)
attendre(delai)
avance(diagonale)
attendre(delai)
dimensions = 200
depart = -dimensions / 2
#maison(debut=(depart, depart), cote=dimensions)
maison(debut=(depart, depart), cote=dimensions, delai=0.5)
depart = -100 - dimensions / 2
va(depart, depart)
couleur('rouge')
ecris("C'EST LA MAISON DE LA TORTUE...", 16)
va(0, 0)
couleur('noir')
3 rosaces
def rosace(rayon=100):
for i in range(6):
couleur()
cercle(rayon)
tg(60)
rosace()
rosace(50)
rosace(25)
couleur("noir")
10 carrés
def carre(c) :
for i in range(4) :
av(c)
tg(90)
for i in range(10) :
vaEn(10*i-200, 10*i-200)
couleur()
carre((10-i)*30)
vaEn(-50, 150)
couleur("bleu")
ecris("Voilà c'est fait", 20)
vaEn(-50, 200)
Vasarely
d’après http://www.prpig.org/2014/08/victor-vasarely-meets-tina-turtle.html
def carre(debut=(0, 0), cote=100):
# un carré plein
va(debut[0], debut[1])
turtle.begin_fill()
for i in range(4):
av(cote)
tg(90)
turtle.end_fill()
# nombre de carrés :
nb = 8
# leur taille :
taille = 40
moitie = (nb + 1) / 2
position = [-moitie * taille, moitie * taille]
va(position[0], position[1])
for x in range(nb):
for y in range(nb):
couleur()
carre(position, taille)
couleur()
carre(
(position[0] + taille/4, position[1] + taille/4),
taille/2)
position[0] += taille
va(position[0], position[1])
position[0] = -moitie * taille
position[1] -= taille
va(position[0], position[1])
position[0] -= taille
va(position[0], position[1])
ecris("Alphabet Plastique, de Victor VASARELY.", 20)
position[1] -= taille
va(position[0], position[1])
Fonctionnement de TorPy
Au lancement de TorPy, un sous-dossier torpy est créé dans le dossier temporaire de l’ordinateur et 3 fichiers y sont copiés depuis le sous-dossier files de l’installation de TorPy :
- turtle.cfg : fichier de configuration de la fenêtre de turtle (dimensions, titre, etc)
- importturtle.py : fichier contenant les traductions des fonctions.
Afin de pouvoir utiliser TorPy dans d’autres langues que le Français, le fichier qui est situé dans le sous-dossier files s’appelle importturtle_xx.py, où xx désigne la langue de l’ordinateur.
La langue est détectée au lancement et si le fichier importturtle_xx.py correspondant existe, il est copié dans le dossier temporaire sous le nom importturtle.py.
Si le fichier importturtle_xx.py n’existe pas, c’est importturtle_fr.py qui est copié - torpy.py : fichier qui sera exécuté (et contient un import du fichier importturtle.py).
Lorsque l’utilisateur demande l’exécution de ses instructions, celles-ci sont insérées dans le fichier torpy.py avant qu’il ne soit exécuté.
Plus précisément, le fichier torpy.py contient la ligne suivante qui sert de repère et sera remplacée par les instructions de l’utilisateur :
# USER INSTRUCTIONS
Adapter TorPy
En exemple, je vais ajouter les fonctions begin_fill et end_fill du module turtle, en les traduisant en debutDeRemplissage et finDeRemplissage, avec des versions courtes remplir et finRemplir.
Modifications du fichier files/importturtle_fr.py
au début du fichier, j’ajoute les 4 nouveaux mots-clés à la liste keywords afin qu’ils soient pris en compte par la coloration syntaxique :
keywords = ( … ‘debutDeRemplissage’, ‘remplir’, ‘finDeRemplissage’, ‘finRemplir’, )
et plus loin je définis les 4 nouvelles fonctions :
def debutDeRemplissage(): turtle.begin_fill()
def remplir(): turtle.begin_fill()
def finDeRemplissage(): turtle.end_fill()
def finRemplir(): turtle.end_fill()
Modifications du fichier translations/instructions_fr
j’ajoute des explications et des exemples d’utilisation dans le fichier :
# pour remplir un dessin (un cercle en exemple) : debutDeRemplissage() cercle(100) finDeRemplissage()
# variante : remplir() cercle(100) finRemplir()
Remarques
- en écrivant cette partie de la page, j’ai ajouté ces 4 fonctions. Donc elles sont déjà intégrées dans TorPy
- on peut ajouter des fonctions de n’importe quel module Python, à condition qu’il soit importé au début du fichier.
Par exemple, les fonctions trigonométriques sont importées du module math de Python - depuis Python 3 les noms de fonctions (et de variables) peuvent être accentués.
Ça peut être pratique mais reste à éviter car TorPy ne fonctionnerait plus avec Python 2.
Traduire TorPy dans une autre langue
La langue est détectée au lancement mais peut aussi être passée en paramètre.
Par exemple si TORPY_DIR désigne le chemin d’installation de TorPy :
python TORPY_DIR/torpy.pyw LANG=es
python TORPY_DIR/torpy.pyw LANG=fr_CA
La langue est indiquée sous la forme xx ou xx_YY.
Par exemple fr indiquera le français, mais fr_CA le français du Québec.
Si vous traduisez TorPy dans une autre langue, faites moi parvenir (pascal.peter at free.fr) votre traduction afin qu’elle puisse être ajoutée au logiciel. Les fichiers à m’envoyer sont les suivants (voir plus bas pour leur description) :
- importturtle_xx_YY.py
- instructions_xx_YY
- torpy_xx_YY.ts
- éventuellement CREDITS_xx_YY.html et README_xx_YY.html
Traduction des fonctions et des instructions
Il suffit de modifier les 2 fichiers textes suivants et de les enregistrer en ajoutant la terminaison xx ou xx_YY :
- files/importturtle_fr.py → files/importturtle_xx.py ou files/importturtle_xx_YY.py
- translations/instructions_fr → translations/instructions_xx ou translations/instructions_xx_YY
Par exemple, j’ai créé une variante de la langue française baptisée fr_LOL.
Dans les fichiers importturtle_fr_LOL.py et instructions_fr_LOL, j’ai juste remplacé avance par avanssss et ecris par ekri.
Remarque : depuis Python 3 les noms de fonctions (et de variables) peuvent être accentués.
Cela reste à éviter car TorPy ne fonctionnerait plus avec Python 2.
Cependant, pour certaines langues cette possibilité peut s’avérer fort utile.
Traduction de l’interface de TorPy (menus, etc)
Il suffit de modifier le fichier texte suivant et de l’enregistrer en ajoutant la terminaison xx ou xx_YY :
- translations/torpy_fr.ts → translations/torpy_xx.ts ou translations/torpy_xx_YY.ts
Le fichier peut être modifié avec Qt Linguist, qui vous permettra aussi de générer un fichier torpy_xx_YY.qm et de tester votre traduction. Pour cela, demandez File → Release dans Qt Linguist.
Voici le résultat en lançant TorPy avec le paramètre LANG=fr_LOL :
Éventuellement, traduction des fichiers README et CREDITS
Ils sont affichés dans la fenêtre À propos
- translations/CREDITS.html → translations/CREDITS_xx.html ou translations/CREDITS_xx_YY.html
- translations/README.html → translations/README_xx.html ou translations/README_xx_YY.html
Dernière modification de cette page : 2021-02-18.