![]()
TU APPRENDS ICI... |
comment influencer le déroulement d’un programme en appuyant sur des touches du clavier. Comme pour les événements de souris, tu définis dans une fonction callback ce qui doit se passer lorsqu’une touche est pressée. La fonction callback n’est pas appelée par le programme lui-même, mais automatiquement par le système lorsqu’une touche est appuyée. |
EXEMPLES |
Example 1: En appuyant sur la touche r, un cercle rouge est dessiné, avec la touche b un cercle bleu et avec la touche g un cercle vert.
Après le démarrage du programme, tu dois d’abord cliquer avec la souris dans la fenêtre graphique, sinon les frappes clavier seront exécutées dans la fenêtre de l’éditeur. Programme: #Gp12a.py from gpanel import * def onKeyPressed(key): print(key) if key == 'r' or key == 82: setColor("red") elif key == 'b' or key == 66: setColor("blue") elif key == 'g' or key == 71: setColor("lime") fillCircle(3) makeGPanel(-10, 10, -10, 10, keyPressed = onKeyPressed) print("Use key r, g, or b.") |
Comme la valeur des variables x et y est modifiée dans une fonction, ces variables doivent être déclarées comme global.. Programme: #Gp12b.py from gpanel import * def onKeyPressed(key): global x, y if key == 'ArrowUp' or key == 38: y += 2 elif key == 'ArrowDown' or key == 40: y -= 2 elif key == 'ArrowLeft' or key == 37: x -= 2 elif key == 'ArrowRight' or key == 39: x += 2 makeGPanel(-100, 100, -100, 100, keyPressed = onKeyPressed) x = 0 y = 0 setColor("lime") lineWidth(5) print("Use cursor keys to move the cursor!") while True: draw(x, y)
Dans la fonction callback, tu définis uniquement l’état .Les nouvelles coordonnées sont calculées dans la fonction setMove(). La vitesse du mouvement peut être réglée avec la commande delay(). Programme: #Gp12c.py from gpanel import * def onKeyPressed(key): global state if key == 'ArrowUp' or key == 38: state = 'UP' elif key == 'ArrowDown' or key == 40: state = 'DOWN' elif key == 'ArrowLeft' or key == 37: state = 'LEFT' elif key == 'ArrowRight' or key == 39: state = 'RIGHT' def setMove(): global x, y if state == 'UP': y += 2 elif state == 'DOWN': y -= 2 elif state == 'LEFT': x -= 2 elif state == 'RIGHT': x += 2 makeGPanel(-100, 100, -100, 100, keyPressed = onKeyPressed) x = 0 y = 0 setColor("lime") lineWidth(5) state = '' while True: setMove() draw(x, y) delay(100)
Programme: #Gp12d.py from gpanel import * def onKeyPressed(key): global state if key == 'Escape' or key == 27: state = 'stop' elif key == 'Enter' or key == 13: state = 'go' def setMove(): global x, dx if state == 'go': x = x + dx if x > 80 or x < -80: dx = -dx elif state == 'stop': return makeGPanel(-100, 100, -100, 100, keyPressed = onKeyPressed) x = 0 y = 0 dx = 1 state = '' while True: setMove() pos(x, y) setColor("red") fillCircle(5) delay(10) setColor("white") fillCircle(5.2) |
À RETENIR... |
| La fonction callback onKeyPressed(key wn’est pas appelée par ton programme, mais par le système lorsque tu as appuyé sur une touche. Le nom des touches, en particulier des touches spéciales, peut être affiché dans la fenêtre de sortie avec print(key) . La fonction callback est enregistrée comme paramètre de makeGPanel(). En principe, la fonction callback ne doit pas contenir de longs blocs de programme. |
À FAIRE PAR TOI-MÊME |
|
![]()