Leçon Tkinter n° 3

Gestion du temps

Dans le dossier tkinter créez un dossier tkinter4. Il contiendra tous les fichiers de cette leçon.

Le module time de Python propose trois formats pour représenter le temps

Gestion de l'horloge

L'heure POSIX

L'heure POSIX est une mesure du temps qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00 : 00 : 00 UTC.

Fonction Action
time() Retourne l'heure POSIX actuelle
sleep(t) Fait une pause de t secondes

Testez, en console, la ligne de code ci-dessous :

Exercice 1

On souhaite réaliser un compte à rebours à partie de 5 secondes.

Testez puis modifiez le code ci-dessous

La structure temps

Une structure temps, en Python, est un tupple qui donne les informations indiquées ci-dessous.

Indice Nom Valeur/strong>
0 tm_year Année
1 tm_mon Mois de 1 à 12
2 tm_mday Numéro du jour dans le mois de 1 à 31
3 tm_hour Heure de 0 à 24
4 tm_min Minutes
5 tm_sec Secondes
6 tm_wday Numéro du jour dans la semaine de 0 à 6
7 tm_yday Numéro du jour dans l'année de 1 à 366
8 tm_isdst Indique le changement d'heure locale (-1,0,1)

Testez, en consonle, les lignes de code ci-dessous.

On remarque que l'accès à un élément du tupple peut se faire par l'indice ou par le nom.

Heure POSIX et structure temps

Voici deux fonction qui permettent le passage de l'heure POSIX à une structure temps et inversement.

Fonction Action
localtime(t) Convertit une heure POSIX en structure temps
Si l'heure n'est pas précisée, elle retorune l'heure locale actuelle
mktime(t) Convertit la structure temp st en heure POSIX

Testez, en console, les lignes de code ci-dessous.

Testez, en console, les lignes de code ci-dessous.

Format d'affichage avec clé

Nous allons, ici, utiliser deux fonctions, strftime et strptime qui permettent de passer d'un structure temps à une chaîne de caractères et inversement.

Fonction Action
strftime(fmt,tps) Retourne une chaîne de caractères au format fmt associée à la structure temps tps.
Si tps n'est pas donné, l'affichage est celui de l'heure actuelle.
strptime(txt,fmt) Transforme la chaîne de caractères txt, qui est au format fmt en structure temps

Pour le format fmt voici les clés utilisées

Clé Valeur
%d Jour du mois entre 1 et 31
%H Heure au format 24 heures
%I Heure au format 12 heures
%j Numéro du jour dans l'année de 1 à 366
%m Mois de 1 à 12
%M Minutes
%S Secondes
%U Numéro de la semaine
%w Numéro du jour de la semaine (Lundi=0)
%y Les deux derneirs chiffres de l'année
%Y Année à 4 chiffres

Testez, en console, les lignes de code ci-dessous.

Testez, en console, les lignes de code ci-dessous.

Exercice 2

Dans cet exercice on veut retoruver le jour de sa naissance à partir de la date.

Recopiez et complétez le code ci-dessous.

Exercice 2

Dans cet exercice on veut connaître le nombre de jours qui nous séparent de Noël.

Recopiez et complétez le code ci-dessous.

Exercice 3

Dans cet exercice on veut connaître la date du prochain vendredi 13.

Recopiez et complétez le code ci-dessous.

Exercice 5

Dans cet exercice on souhaite connaître les vendredi 13 d'une année.

Recopiez et complétez le code ci-dessous.

Exercice 6

Réalisez une fonction qui vous renvoie le nombre de jours qui vous séparent de votre anniversaire.

La méthode after

La méthode after(temps,fonction) permet de lancer la fonction toute les millisecondes donné par la variable temps
L'avantage de la méthode after est qu'elle ne bloque pas les autres processus en cours.

Exercice 5

Dans cet exercice on veut afficher une horloge.

Recopiez et complétez le code ci-dessous.

Exercice 6

Dans cet exercice on souhaite désarmorcer une bombe qui change de lieu de manière aléatoire sur un canevas.
Cette bombe est représentée par un bouton OFF.
Nous avons 10 secondes pour désarmorcer la bombe et le compte à rebours s'affiche.

Dans cet exercice on va utiliser la méthode grid au lieu de la méthode place.
Cette méthode a l'avantage de mieux s'adapter aux écrans de différentes tailles
Recopiez et complétez le code ci-dessous.

Créer un personnage qui marche

Tkinter ne sait pas afficher des images gif animées. Nous allons donc nous allons donc dévellopé un gif animé. Pour cela nous agiront en deux étapes : en décomposant un gif animé en une succession d'images,gif .

Les images décomposées seront dans le même dossier que le script python ci-dessous.

Exercice 7

Dans cet exercice on va créer un personnage qui court.

Recopiez le code ci-dessous.

Exercice 8

Reprendre l'exercice précédent avec un personnage de votre choix.

Exercice 9

Dans cet exercice on veut que le personnage fasse demi-tour lorsqu'il arrive à un bout de l'écran.

Pour cela vous allez créer un miroir pour chaque image du personnage qui marche.

Puis nous allons créer deux listes: personnagesd, le personnage marche de gauche à droite, et personnagesg, le personnage marche de droite à gauche.

On donne ci-dessous la fonction animation

La méthode bbox et la métode move

La méthode bbox permet de récupérer les coordonnées de la boîte contenant un objet du canevas.
Cette méthode renvoie un tuples (x1,y1,x2,y2) comme l'indique la figure ci-dessous

Dans le code précédent de votre personnage rajoutez les lignes 12 et 13, comme indiqué ci-dessous, puis exécutez le code.

Exercice 10

Das cet exercice on va à nouveau modifier le code précédent en utilisant la méthode move.

Cette méthode permet d'animer un objet du canevas à partir de son vecteur vitesse
On écrira monCanevas.move(personnage,dx,dy), où dx et dy sont les coordonnées du vecteur vitesse.
Modifiez la fonction animation comme indiqué ci-dessous, puis testez le code.

Exercice 11

Dans cet exercice on va reprendre l'exercice 2 de la première leçon de tkinter, jeu de mot.
Le mot présenté aura la première et la dernière lettre bien placées.
Si le joueur a trouvé le bon mot, un personnage défilera de la gauche vers la droite.
Si le joueur n'a pas trouvé, un autre personnage défilera de la droite vers la gauche.

On donne ci-dessous les codes modifiés de quelques fonctions.

Voici des captures d'écran du résultat attendu.

Exercice 12

Vous ajouterez à l'exercice précédent:

On donne ci-dessous les codes de deux fonctions.