HomeTortue graphiqueGPanelRobotique WebTigerPython
 Python - Online
Deutsch   English   Français   

9. Mausevents

 

 

TU APPRENDS ICI...

 

Écrire des programmes qui réagissent aux clics de souris ou aux mouvements de la souris. Ce concept de programmation est notamment utilisé dans les programmes ayant une interface graphique utilisateur.

 

 

EXEMPLES

 

Pour les événements de la souris, on utilise la technique de programmation suivante: On définit dans une fonction (la fameuse fonction de rappel, ou callback) ce qui doit se passer lors de l'appui sur un bouton de la souris. Cette fonction n’est jamais appelée explicitement dans ton propre code, mais est automatiquement appelée par le système lorsqu’un événement de souris se produit. Pour cela, il faut informer le système de son nom. On appelle cela enregistrer le callback.

Example 1: Dessiner des cercles avec les clics de souris
La fonction callback onMousePressed(x, y)dessine un petit cercle à la position du clic. Cette fonction est enregistrée lors de l’appel de makeGPanel() via un paramètre nommémousePressed = onMousePressed registriert.

Le nom de la fonction callback peut être choisi librement. Le nom du paramètre nommé, par lequel la fonction callback est enregistrée dans makeGPanel(), doit toutefois être mousePressed ou mouseClicked.

 

Programm:    

# Gp9a.py

from gpanel import *

def onMousePressed(x, y):
    pos(x, y)    
    fillCircle(1)

makeGPanel(0, 20, 0, 20, mousePressed = onMousePressed)
setColor("cyan")
Copy to clipboard

 

Example 2: Capturer un mouvement de la souris
Un callback enregistré avec le paramètre mouseMoved réagit aux mouvements de la souris. S’il est enregistré avec le paramètre mouseDragged, il réagit aux mouvements de la souris avec le bouton enfoncé.

Dans l’exemple, des dessins amusants en forme de tubes apparaissent lors d’un déplacement avec le bouton enfoncé.

 

Programme:     

# Gp9b.py

from gpanel import *      

def onMouseDragged(x, y):
    pos(x, y)
    setColor("cyan")
    fillCircle(.04) 
    setColor("black")
    circle(.04)  

makeGPanel(mouseDragged = onMouseDragged)
Copy to clipboard


Example 3: Dessiner avec le bouton enfoncé
Avec les événements de souris, on peut créer un simple programme de dessin. On utilise la fonctiondraw(x, y) qui, à chaque appel de la fonction callback onMouseDragged(), trace une ligne vers la position actuelle de la souris (et place le curseur graphique sur x, y). Le callback onMousePressed()est nécessaire pour repositionner le curseur graphique à la position actuelle de la souris.
 

Les deux callbacks sont enregistrés en même temps lors de la création du GPanel avec des paramètres nommés.

Programme:     

# Gp9c.py

from gpanel import *

def onMousePressed(x, y):
    pos(x, y)

def onMouseDragged(x, y):
    draw(x, y)

makeGPanel(mousePressed = onMousePressed, 
           mouseDragged = onMouseDragged)
Copy to clipboard

 

Example 4: Remplir des zones avec des clics

Dans l’exemple, tu dessines d’abord une grille 8x8. Ensuite, avec des clics, tu peux remplir les cases de la grille avec la fonction
fill(x, y, "white", "red")
"white", "red") en colorant en rouge, où (x, y) est la position du clic, white est l’ancienne couleur et red la nouvelle couleur.

 

Programme:     

# Gp9d.py

from gpanel import *

def drawGrid():
    for k in range(8):
        for i in range(8):
            rectangle(i, k, i + 1, k + 1)  
    
def onMousePressed(x, y):
    fill(x, y, "white", "red")   

makeGPanel(-1, 9, -1, 9, mousePressed = onMousePressed)
drawGrid()
Copy to clipboard
 


 

Example 5: Utiliser le clic gauche et le clic droit

Avec le clic gauche, les carrés deviennent rouges; avec le clic droit, la marquage est effacé. isLeftMouseButton(): Renvoie True si le bouton gauche est enfoncé.

isLeftMouseButton(): Renvoie True si le bouton gauche est enfoncé. Renvoie True si le bouton droit est enfoncéGibt True zurück, wenn die rechte Maustaste gedrückt wurde
 

Programme:    

# Gp9e.py

from gpanel import *

def drawGrid():
    for k in range(8):
        for i in range(8):
            rectangle(i, k, i + 1, k + 1)  
    
def onMousePressed(x, y):
    if isLeftMouseButton():
        fill(x, y, "white", "red")   
    if isRightMouseButton():    
        fill(x, y, "red", "white")   

makeGPanel(-1, 9, -1, 9, mousePressed = onMousePressed)
drawGrid()
Copy to clipboard

 

 

À RETENIR...

 

Dans une callback function, vous définissez ce qui doit se produire lorsque le bouton de la souris est enfoncé ou lorsque la souris est déplacée. Cette fonction n’est pas appelée par le programme, mais directement par le système lorsqu’un tel événement se produit. La callback doit être enregistrée lors de la création du GPanel.

L’appui d’un bouton de la souris peut être capté par deux callbacks différents: un événement Press (pression) ou un événement Click (clic). L’événement Click se déclenche seulement après que le bouton a été relâché; l’événement Press se produit lors de l’appui du bouton. L’événement Click est enregistré avec le paramètre mouseClicked.

Le déplacement de la souris est enregistré avec le paramètre mouseMoved ou avec le paramètre mouseDragged (déplacement avec bouton de la souris enfoncé).

 

 

À FAIRE PAR TOI-MÊME

 

1)


À la position du clic de souris, se forme un petit point et une ligne vers le point précédent.

 


 

2)


Dans le chapitre Fonctions, tu as appris à dessiner des étoiles. À chaque clic, une étoile doit apparaître à la position de la souris.

 


 

3)


Programme un jeu de Tic-Tac-Toe simple. Deux joueurs dessinent alternativement des carrés rouges et verts dans le but d’aligner une ligne, une colonne ou une diagonale.