💻
Initiation à l'informatique
  • Python
  • Séance 1
  • Séance 2
  • Séance 3
  • Séance 4 : Turtle
  • Corrections S4
  • Anciens supports
    • Séance 4
    • Séance 5
Propulsé par GitBook
Sur cette page
  • Introduction
  • Environnement de tests
  • Utilisation de tkinter
  • Initialisation
  • Fenetre
  • Zone de dessin
  • Dessiner des formes
  • Déplacer des formes
  • Exercices
  • Exercice 1
  • Exercice 2
  • Notion de fonctions
  • Exercice 1 sur les fonctions
  • Exercice 2 sur les fonctions
  • Animation
  • Exercice 3
  • Gestion des événements claviers
  • Exercice 4
  1. Anciens supports

Séance 4

PrécédentCorrections S4SuivantSéance 5

Dernière mise à jour il y a 1 an

Introduction

Python dispose de nombreuses librairies permettant de faire un peu plus qu'un simple script dans une console.

Par exemple des interfaces graphiques (tkinter), des jeux (pygames), des graphiques (matplotlib), des calculs scientifiques (numpy), etc.

Nous allons ici découvrir la librairie tkinter, qui permet de créer des interfaces graphiques et des animations.

Environnement de tests

Pour éviter de devoir installer tous les éléments sur les machines de l'unviersité, nous allons utiliser un environnement en ligne.

Nous pouvons utiliser le site , qui permet de créer des projets en ligne.

Utilisation de tkinter

Initialisation

Pour utiliser tkinter, il faut importer la librairie, et créer une fenêtre principale.

from tkinter import *

Le documentation officielle se trouve ici :

Fenetre

Il faut ensuite créer une fenetre :

fenetre = tk.Tk()

Il est possible de personnaliser la fenêtre, par exemple en lui donnant un titre :

fenetre.title("Ma fenêtre")

L'affichage de la fenêtre se fait avec la fonction mainloop :

fenetre.mainloop()

Le code minimale pour afficher une fenetre sera donc :

import tkinter as tk

fenetre = tk.Tk()
fenetre.title("Ma fenêtre")
fenetre.mainloop()

Zone de dessin

Une fenetre est ensuite une zone qui peut contenir des boutons, des textes, ... Il faut le préciser et les positionner.

Nous allons créer une zone "Canvas" (qui permet de dessiner) :

largeur = 500
hauteur = 500

canvas = tk.Canvas(fenetre, width=largeur, height=hauteur, bg='white')
canvas.pack()

La fonction Canvas contient les paramètres suivants :

  • fenetre : la fenêtre dans laquelle le canvas doit être affiché

  • width : la largeur du canvas

  • height : la hauteur du canvas

  • bg : la couleur de fond du canvas

La syntaxe avec le xxx=valeur permet de préciser le nom des paramètres, ce qui permet de les mettre dans l'ordre que l'on veut.

pack permet de placer le canvas dans la fenêtre.

Dessiner des formes

Il est possible de dessiner des formes sur le canvas :

canvas.create_line(0, 0, 200, 100)

La fonction create_line permet de dessiner une ligne. Les paramètres sont les coordonnées des points de départ et d'arrivée.

Le point de départ se trouve toujours en haut à gauche de la fenêtre.

Fair une ligne sur plusieurs lignes :

canvas.create_line(0, 0, 200, 100, 300, 200, 400, 300)

Il est possible de dessiner d'autres formes, comme des rectangles :

canvas.create_rectangle(50, 25, 150, 75, fill="blue")

La fonction create_rectangle permet de dessiner un rectangle. Les paramètres sont les coordonnées des points de départ et d'arrivée, et la couleur de remplissage.

Il est possible de dessiner des cercles :

canvas.create_oval(10, 10, 100, 100, outline="red", width=2)

La fonction create_oval permet de dessiner un cercle. Les paramètres sont les coordonnées des points de départ et d'arrivée, la couleur de contour et la largeur du contour.

Il est possible de dessiner du texte :

canvas.create_text(100, 100, text="Bonjour")

La fonction create_text permet de dessiner du texte. Les paramètres sont les coordonnées du point de départ et le texte à afficher.

Déplacer des formes

Il est possible de déplacer des formes :

canvas.move(objet, 5, 0)

La fonction move permet de déplacer un objet. Les paramètres sont l'objet à déplacer, et les coordonnées du déplacement.

On peut récupérer les coordonnées d'un objet :

positions = canvas.coords(objet)

La fonction coords permet de récupérer les coordonnées d'un objet. Les paramètres sont l'objet à déplacer. Les coordonnées sont retournées sous forme d'une liste. Les éléments de la liste sont les coordonnées des points de départ et d'arrivée.

Exercices

Exercice 1

Créez une fenêtre avec un canvas de 500x500, et dessinez un rectangle bleu de 50x50 à 100x100.

Exercice 2

Créez une fenêtre avec un canvas de 500x500, et dessinez un cercle rouge de 50x50 à 100x100.

Notion de fonctions

Pour la suite nous allons avoir besoin de créer des fonctions. Une fonction est une suite d'instructions que l'on peut appeler plusieurs fois.

Une fonction se crée avec le mot clé def :

def ma_fonction():
    print("Bonjour")

L'utilisation de cette fonction se fait de la manière suivante :

ma_fonction()

Il est possible de passer des paramètres à une fonction :

def ma_fonction(nom):
    print("Bonjour", nom)

L'utilisation de ses fonctions se fait de la manière suivante :

ma_fonction("toto")

Il est possible de retourner une valeur :

def ma_fonction(nom):
    return "Bonjour " + nom

L'utilisation de ses fonctions se fait de la manière suivante :

message = ma_fonction("toto")
print(message)

Ce concept est très utilisé en programmation et permet d'éviter de recopier du code et d'avoir une approche modulaire.

Exercice 1 sur les fonctions

Ecrire une fonction qui prend en paramètre un nombre, et qui affiche le carré de ce nombre.

Appeler cette fonction avec 3 nombres.

Exercice 2 sur les fonctions

Ecrire une fonction qui prend en paramètre un nombre, et qui retourne la somme des nombres de 1 à ce nombre.

Appeler cette fonction avec 3 nombres et afficher les résultats.

Animation

Une animation consiste à faire bouger des objets sur l'écran. Pour cela, il faut raffraichir l'écran régulièrement avec la fonction update.

import tkinter as tk

fenetre = tk.Tk()
fenetre.title("Ma fenêtre")

largeur = 500
hauteur = 500

canvas = tk.Canvas(fenetre, width=largeur, height=hauteur, bg='white')
canvas.pack()

balle = canvas.create_oval(10,
                           10,
                           50,
                           50,
                           outline="red",
                           width=2,
                           fill="yellow")

deplacement_y = 1


def deplacer_balle():
  global deplacement_y
  canvas.move(balle, 0, deplacement_y)
  position = canvas.coords(balle)
  print(position)
  if position[3] >= hauteur or position[3] <=0:
    deplacement_y = -deplacement_y

  fenetre.after(10, deplacer_balle)


deplacer_balle()

fenetre.mainloop()

Exercice 3

Faire déplacer un carré ou une boule de la droite vers la gauche au milieu de l'écran.

Pour raffraichir l'écran, il faut utiliser la fonction update :

canvas.update()

Pour executer une opération toutes les xx milisecondes :

fenetre.after(100, fonction)

Il faut ensuite créer une fonction qui déplace l'objet, et qui appelle la fonction after pour se rappeler elle-même.

Gestion des événements claviers

La librairie tkinter permet de gérer les événements claviers, c'est à dire détecter quand une touche est pressée et laquelle. Pour chaque touche il est ensuite possible de définir une action.

Pour récupérer une touche pressée, il faut utiliser la fonction bind :

fenetre.bind("<Key>", fonction)

La fonction bind permet de lier un événement à une fonction. Les paramètres sont l'événement à lier, et la fonction à appeler.

"<key>" est l'événement qui correspond à une touche pressée. Par exemple "<Left>" correspond à la touche flèche gauche.

Exercice 4

Faire déplacer un carré en utilisant les touches flèches droite et gauche.

Toutes les options de create_line sont .

Vous trouverez la liste des événements .

repl.it
https://tkdocs.com/tutorial/index.html
ici
ici