Graphique¶
A propos¶
Cette librairie permet l’affichage d’une fenêtre graphique dynamique et fournie des fonctions permettant d’y afficher des objets géométriques simples (point, cercle, segment, vecteur, rectangle).
Basée sur pygame, vous pouvez également récupérer les événements clavier ou souris pour interagir avec l’utilisateur.
Vous pouvez, par exemple, l’utiliser pour construire un jeux de type pong.
Utilisation¶
Voici un exemple qui affiche une fenêtre graphique traversée en diagonale par un point.
# On importe la librairie
from pydiderotlibs.graphique import *
# Nous aurons également de la librairie time
from time import *
# On initialise les coordonnées du point au coin haut gauche de la fenêtre
x = 0
y = 0
# On créé la fenêtre graphique
creer_fenetre()
# Boucle principale
while 1:
# Il est important d’appeler la fonction demande_evenements() qui gère la fermeture de la fenêtre
demande_evenements()
# Trace un cercle au coordonnées (x,y)
cercle(x, y)
# Attend un dixième de secondes
sleep(0.1)
# Efface le cercle
cercle(x, y, couleur='blanc')
# Ajoute le vecteur vitesse aux coordonnées du point
x += 1
y += 1
Note
Il est important d’appeler la fonction demande_evenements() qui gère la fermeture de la fenêtre
Événements¶
La fonction demande_evenements() permet une gestion simplifiée des entrées clavier et souris de l’utilisateur.
Elle retourne un dictionnaire contenant les touches pressées, les clics et déplacement souris.
Touches clavier¶
- Les touches spéciales sont présentes sous la forme:
'haut'
,'bas'
,'gauche'
,'droite'
et'espace'
- Les touches alphanumériques sont présentes sous leur forme ascii:
'a'
,'b'
,…';'
,…
Vous pouvez par exemple tester si les touches 'haut'
et 'a'
sont pressées :
# On importe la librairie graphique
from pydiderotlibs.graphique import *
# On créé la fenêtre graphique
creer_fenetre()
# Boucle principale
while 1:
evenements = demande_evenements()
if 'haut' in evenements:
print('la touche "haut" est enfoncée')
if 'a' in evenements:
print('la touche "a" est enfoncée')
Et la souris?¶
- Un clic sur le bouton gauche de la souris sera présent sous la forme
'clic'
. Sa valeur contiendra les coordonnées de la souris au moment du clic. - Un déplacement de souris sera présent sous la forme
'souris'
. Sa valeur contiendra les coordonnées de la souris après le déplacement.
Vous pouvez par exemple tester si un utilisateur bouge la souris ou clique et récupérer les coordonnées de la souris:
# On importe les librairie et time
from pydiderotlibs.graphique import *
# On créé la fenêtre graphique
creer_fenetre()
# Boucle principale
while 1:
evenements = demande_evenements()
if 'souris' in evenements:
# ici evenements['souris'] est une liste [x, y]
print("Nouvelle abscisse : " + str(evenements['souris'][0]))
if 'clic' in evenements:
# ici evenements['clic'] est une liste [x, y]
print('clic aux coordonées ' + str(evenements['clic']))
Rafraîchissement automatique¶
Par défaut, cette librairie rafraîchit automatiquement l’affichage a chaque modification de la fenêtre: création de point, de cercle, …
Cela simplifie l’utilisation dans des cas simples mais, si vous souhaitez créer un programme complexe qui modifie fréquemment la fenêtre graphique, cela va créer des scintillements désagréables et ralentir le programme.
Vous pouvez désactiver ce rafraîchissement automatique en passant l’argument autorefresh=fasle
à la fonction fenetre()
. Il faudra alors appeler la fonction rafraichir()
lorsque vous voulez rafraîchir l’affichage de la fenêtre graphique.
Notre exemple de départ devient alors:
# On importe la librairie
from pydiderotlibs.graphique import *
# Nous aurons également de la librairie time
from time import *
# On initialise les coordonnées du point au coin haut gauche de la fenêtre
x = 0
y = 0
# On créé la fenêtre graphique en passant l'argument autorefresh=false
creer_fenetre(autorefresh=False)
# Boucle principale
while 1:
# Il est important d’appeler la fonction demande_evenements() qui gère la fermeture de la fenêtre
demande_evenements()
# Trace un cercle au coordonnées (x,y)
trace_cercle(x, y)
# On actualise la fenêtre graphique
rafraichir()
# Attend un dixième de secondes
sleep(0.1)
# Efface le cercle
trace_cercle(x, y, couleur='blanc')
# Ajoute le vecteur vitesse aux coordonnées du point
x += 1
y += 1
Couleurs¶
Les formats de couleurs acceptés sont:
- Une chaîne de caractères (str) en francais dans la liste ci-contre (
'rouge'
par exemple). - Une chaîne de caractères représentant la couleur sous forme hexadécimale. Par exemple la couleur rouge est
'#FF0000'
. - Un tuple RVB
(r, v, b)
oùr
,v
,b
sont des entiers entreO
et255
. Par exemple la couleur rouge est(255, 0, 0)
. - Une chaîne de caractère en anglais dans la liste suivante:
'black'
,'white'
,'grey'
,'red'
,'green'
,'blue'
,'yellow'
,'pink'
,'purple'
.
Documentation¶
-
fenetre
(largeur=600, hauteur=500, orientation_axe_ordonnees=False, titre='Fenetre graphique', autorefresh=True)[source]¶ Crée et affiche une fenêtre graphique.
Alias:
window()
,creer_fenetre()
Paramètres: - largeur (int, optionnel) – Largeur de la fenetre en pixels (
600
par défaut) - hauteur (int, optionnel) – Hauteur de la fenetre en pixels (
500
par défaut) - orientation_axe_ordonnees – Si on met cet argument à True, l’axe des ordonnées sera orienté de bas en haut comme en maths. Sinon il est orienté dans l’autre sens comme habituellement en informatique (
False
par défaut) - titre (str, optionnel) – Titre de la fenetre (
Fenetre graphique
par défaut) - autorefresh (bool, optionnel) – Active le rafraichissement automatique de la fenetre graphique (False par défaut)
- largeur (int, optionnel) – Largeur de la fenetre en pixels (
-
rafraichir
()[source]¶ Rafraîchie la fenêtre graphique. C’est uniquement utile si vous désactivez l’option autorefresh.
-
demande_evenements
()[source]¶ Récupère les évenements pygame gère la fermeture de la fenetre et retourne les évenements formatés.
Renvoie un dictionnaire d’évenements formaté comme suit:
{'touche1': None, 'touche2':None, 'souris': [x,y], 'click': [x,y]}
Les valeurs
None
pour les touches peuvent surprendre mais il est nécéssaire d’utiliser un dictionnaire pour avoir les coordonnées éventuelles de la souris lors d’un click par exemple. Pour les touches clavier, l’importance est la présence de la cléf et la valeur associée est doncNone
.- Les caractères alphanumériques sont encodés en ascii (
'a'
,'n'
,';'
) et, si présent, leur valeur estNone
. - les touches spéciales ont les clefs
'espace'
,'haut'
,'bas'
,'droite'
,'gauche'
et, si présent, leur valeur estNone
. - Un clic avec le bouton gauche de la souris ajoute une clef
'clic'
. Sa valeur est une liste[x, y]
des coordonnées de la souris. - Un déplacement de la souris ajoute une clef
'souris'
. Sa valeur est une liste[x, y]
des coordonnées de la souris.
Alias:
events()
,ecoute_evenements()
- Les caractères alphanumériques sont encodés en ascii (
-
efface
(couleur='blanc')[source]¶ Efface l’écran.
Paramètres: couleur (couleur, optionnel) – Couleur de remplissage de l’écran ( 'blanc'
par défaut).
-
cercle
(x, y, couleur='bleu', rayon=25, epaisseur=0)[source]¶ Trace un cercle dans la fenetre graphique.
Alias:
circle()
,trace_cercle()
Paramètres: - x (int) – Abscisse du centre du cercle
- y (int) – Ordonnée du centre du cercle
- rayon (int, optionnel) – Rayon du cercle (25 par défaut)
- epaisseur (int, optionnel) – Epaisseur du cercle (
0
par défaut). Si0
, le cercle sera rempli et apparaitra comme un disque. - couleur (couleur, optionnel) – Couleur du cercle (bleu par défaut)
-
cercle_aleatoire
(couleur='bleu', rayon=5, epaisseur=0)[source]¶ Trace un (petit) cercle dans la fenetre graphique, à un endroit choisit au hasard. (Utile pour fairre de la neige par exemple.)
Alias:
random_circle()
,randcircle()
,trace_cercle_aleatoire()
Paramètres:
-
point
(x, y, couleur='bleu')[source]¶ Trace un point dans la fenetre graphique.
Alias:
trace_point()
Paramètres:
-
rectangle
(x, y, largeur=100, hauteur=50, couleur='bleu', epaisseur=0)[source]¶ Trace un rectangle horizontal dans la fenetre graphique .
Le sommet haut-gauche à pour coordonnées
(x,y)
, lalargeur
est la taille en abscisse et lahauteur
la taille en ordonnée.Alias:
trace_rectangle()
Paramètres: - x (int) – abscisse du sommet haut gauche du rectangle
- y (int) – ordonnée du sommet haut gauche du rectangle
- largeur (int) – taille du rectangle sur l’axe des abscisses
- hauteur (int) – taille du rectangle sur l’axe des ordonnées
- couleur (couleur, optionnel) – Couleur du rectangle (
bleu
par défaut) - epaisseur (int, optionnel) – Epaisseur des cotés du rectangle (
0
par défaut). Si0
, le rectangle est rempli.
-
triangle
(x1, y1, x2, y2, x3, y3, couleur='bleu', epaisseur=0)[source]¶ Trace un triangle dans la fenetre graphique .
Alias:
trace_triangle()
Paramètres: - x1 (int) – abscisse du premier sommet du triangle
- y1 (int) – ordonnée du premier sommet du triangle
- x2 (int) – abscisse du deuxième sommet du triangle
- y2 (int) – ordonnée du deuxième sommet du triangle
- x3 (int) – abscisse du troisième sommet du triangle
- y3 (int) – ordonnée du troisième sommet du triangle
- couleur (couleur, optionnel) – Couleur du triangle (
bleu
par défaut) - epaisseur (int, optionnel) – Epaisseur des cotés du triangle (
0
par défaut). Si0
, le triangle est rempli.
-
segment
(x1, y1, x2, y2, couleur='bleu', epaisseur=2)[source]¶ Trace un segment entre les points de coordonées
(x1, y1)
et(x2, y2)
.Alias:
trace_segment()
Paramètres: - x1 (int) – abscisse de la première extremité du segment
- y1 (int) – ordonnée de la première extremité du segment
- x2 (int) – abscisse de la deuxieme extrémité du segment
- y2 (int) – ordonnée de la deuxieme extrémité du segment
- couleur (couleur, optionnel) – Couleur du segment (
bleu
par défaut) - epaisseur (int, optionnel) – Epaisseur du segment (
2
par défaut)
-
vecteur
(x, y, v, couleur='rouge', epaisseur=2)[source]¶ Trace la représentation du vecteur
v
à partir du point d’origine(x, y)
.Alias:
vector()
,trace_vecteur()
Paramètres: - x (int) – abscisse du point d’origine de la représentation du vecteur
- y (int) – ordonnée du point d’origine de la représentation du vecteur
- v (list) – Coordonnées de la deuxieme extrémité du segment
- couleur (couleur, optionnel) – Couleur du segment (
rouge
par défaut) - epaisseur (int, optionnel) – Epaisseur du segment (
2
par défaut)
-
vecteur2
(xv, yv, couleur='rouge', epaisseur=2)[source]¶ Trace la représentation du vecteur de coordonnées
(xv, yv)
à partir d’une origine choisie au hasard.Alias:
vector2()
,trace_vecteur2()
Paramètres:
-
image
(x, y, nom, largeur=100, hauteur=100)[source]¶ Trace une image dans la fenetre graphique.
Alias:
trace_image()
Paramètres:
-
explosion
(x, y, couleur='orange', r=25, c=0.5, n=10)[source]¶ Trace un polygône régulier étoilé à
2n
côté, de rayon extérieurr
, et tel que le rayon intérieur est égal àc*r
(pourc=0
, le polygône est réduit àn
rayons du cencle de rayonr
pourc=1
, c’est un polygône régulier à2n
côtés)Alias:
trace_explosion()
Paramètres:
-
axes
(color='noir')[source]¶ Dessine les axes de coordonnées pour une meilleure compréhension par les élèves.
Alias:
trace_axes()
-
texte
(message, x, y, police='', taille=12, couleur='noir')[source]¶ Affiche un texte dans la fenetre graphique.
Paramètres: - message (str) – le texte à afficher
- x (int) – abscisse du début du texte
- y (int) – ordonnée du haut du début du texte
- police (str, optionnel) – la police de caractère à utiliser. Si non renseigné ou si la police n’est pas installée, on utilise la police de caractère défaut du system
- taille (int, optionnel) – taille du texte
- couleur (couleur, optionnel) – couleur du texte