Tkinter
EXO 1
On
veut créer une interface qui affiche un ovale.
4 boutons
permettent de déplacer cet ovale
1 bouton pour sortir du
programme.
-
Il faut d'abord créer un canvas (fond gris) dans lequel on
créera un ovale.
On doit pour cet ovale spécifier
la couleur, l'épaisseur de bordure, et les 4 coordonnées
(coin supérieur gauche et coin inférieur droit, comme
pour les rectangles)
exemple: oval1 =
canvas.create_oval(x1,y1,x2,y2,width=1,fill='green')
- Les 4
coordonnées sont 4 variables que l'on pourra
(exceptionnellement) utiliser en globales lors de l'utilisation des
fonctions
- Les 4 boutons doivent faire appel à 4
fonctions (sans argument)
- Ces fonctions doivent modifier les
valeurs des coordonnées, puis réafficher l'ovale.
-
Pour réafficher l'ovale à une autre position, il faut
suffit de lui réaffecter de nouvelles
coordonnées:
canvas.coords(monovale, x1, y1,
x2, y2)
- Ensuite (et seulement si le programme fonctionne
déjà...) ajouter la possibilité de déplacer
l'ovale avec les flèches du clavier (en plus des boutons)
Il
faut utiliser la méthode "bind" sur un objet comme
dans cet exemple:
fenetre.bind("<Down>",
deplacement_bas)
. Le premier argument est la touche du clavier
(<Left>, <Right>, <Up>, <Down>)
. Le
deuxième est l'action à exécuter, soit une des 4
fonctions de déplacement, sauf que...bind n'accepte que des
méthodes et pas des fonctions.
Solution: soit tout mettre
en objet, soit ajouter un argument factice au moment de déclarer
la fonction (remplace le "self")
L'appel de la fonction,
lui, doit se faire sans argument.