Initiation la
programmation python
S ance en ligne du 24/01/2021
Enseignante Tutrice : Mme Mansouri L.
Partie abord e :
Module 10: Les modules
Module 11: Les interfaces graphiques avec tkinter
Module 12: Le module Numpy
Module 10:
Les modules
1. Pr sentation des modules
4
Un module est un chier script Python permettant de d nir des l ments de programme
r utilisables.
Ce m canisme permet d laborer eca ement des biblioth ques de fonctions ou de classes.
Avantages des modules :
r utilisation du code;
la documentation et les tests peuvent tre int gr s au module;
r alisation de services ou de donn es partag s;
partition de lespace de noms du syst me.
2. Chargement des modules externes
Syntaxe
from module import *
from module import
fonctions_a_importer
import module
Description
Charger
la totalit du module. Cette
instruction charge le module, l x cute et
place toutes les fonctions du module (et
noms
variables)
courant
lespace
dans
de
Charger que certaines fonctions du
module
On importe le module. En revanche les
fonctions ne sont plus plac es dans
lespace de noms courants mais dans un
espace propre. Pour y acc der, il
faut
pr ciser quon utilise la fonction dans cet
espace de noms
Exemples
from math import *
from math import sin,cos
import math
import module
nom_alias
as
Faciliter lutilisation en pr cisant un alias
pour cet espace de noms
import math as m
6
Lutilisation dun objet dun module (les variables, les constantes, les fonctions,..) se
fait avec cette syntaxe :
module.objet
module.fonction(param1, param2, ...)
Exemples :
import datetime
x = datetime.datetime.now()
print(x)
x = datetime.datetime(2020, 10, 10)
print(x)
print(x.year)
import math
Affichage
from datetime import *
2020-10-10 08:53:11.288346
2020-10-10 00:00:00
2020
x = datetime.now()
print(x)
x = datetime(2020, 10, 10)
print(x)
print(x.year)
x = math.ceil(1.4) # arrondit un nombre vers le haut son entier le plus proche
y = math.floor(1.4) #arrondit un nombre vers le bas son entier le plus proche
print(x) # affiche 2
affiche 1
print(y)
3. Modules personnalis s
Pour cr er un module , il suffit d' crire un ensemble de fonctions (et/ou de
constantes) dans un fichier, puis d'enregistrer ce dernier avec une
extension .py (comme n'importe quel script Python).
Exemple :
puissance.py
"""Un module pour afficher la puissance
des nombres"""
def carre(valeur):
resultat = valeur**2
return resultat
def cube(valeur):
resultat = valeur**3
return resultat
from puissance import carre
a = 5
u = carre(a)
print("le carre vaut", u)
>>> import puissance
>>> help(puissance)
Help on module puissance:
NAME
puissance - Un module pour afficher la puissance des nombres
FUNCTIONS
carre(valeur)
cube(valeur)
FILE
d:\cours python\puissance.py
Les packages
un package :un dossier qui rassemble plusieurs modules.
Le nom du package est le m me que celui du dossier.
On cr e le fichier __init__.py dans le dossier, qui indique qu'il s'agit d'un package .
On peut importer des packages en utilisant la syntaxe:
nom-paquet.nom-module.nom-element.
Puissance.py
Operations.py
Test.py
def carre(valeur):
resultat = valeur**2
return resultat
def cube(valeur):
resultat = valeur**3
return resultat
def addition(val1,val2):
return val1+val2
_init__.py
def multi(val1,val2):
return val1*val2
from package1 import puissance,operations
n1=int(input("donner une valeur 1 : "))
n2=int(input("donner une valeur 2 :"))
r1=puissance.carre(n1)
print("le carr est :",r1)
r2= operations.multi(n1,n2))
print("la multiplication de ",n1," par",n2," est:",r2)
5. Quelques modules courants
9
math : fonctions et constantes math matiques de base (sin, cos, exp, pi...).
sys : interaction avec l'interpr teur Python, passage d'arguments.
os : dialogue avec le syst me d'exploitation.
random : g n ration de nombres al atoires.
time : acc s l'heure de l'ordinateur et aux fonctions g rant le temps.
Calendar : fonctions de calendrier ;
urllib : r cup ration de donn es sur internet depuis Python.
Tkinter : interface python avec Tk. Pour la cr ation d'objets graphiques
pickle : criture et lecture de structures Python (comme les dictionnaires par
exemple).
Pandas : un module compl mentaire qui permet la manipulation et lanalyse des
donn es.
Numpy :un module compl mentaire destin offrir Python des outils de calculs
scientifiques avanc s.
Module 11:
Les interfaces
graphiques avec
Tkinter
1. Pr sentation du module
11
Plusieurs autres biblioth ques graphiques ont t propos es pour python :
wxPython, pyQT, pyGTK, etc.
Tkinter (Tool Kit interface) est un module int gr la biblioth que standard de Python,
permettant de cr er des interfaces graphiques :
"des fen tres,
"des widgets (boutons, zones de texte, cases cocher, &),
"des v nements (clavier, souris, &).
Tkinter est disponible sur Windows et la plupart des syst mes Unix : les interfaces cr es avec
Tkinter sont donc portables.
Tkinter a l'avantage d' tre disponible par d faut, sans n cessiter une installation
suppl mentaire.
2. Le squelette dune interface tkinter
12
La cr ation dune interface graphique laide de tkinter est faite en suivant ces tapes:
1
2
3
4
Importation du module tkinter
Cr ation de la fen tre principale de linterface graphique
Lajout de un ou plusieurs widgets graphiques
Lentr e de la boucle d v nements principale pour agir chaque v nement
d clench par lutilisateur
Exemple
13
Import des noms du module
from tkinter import *
Cr ation d'un objet "fenetre " qui servira de r f rence tous les autres objets
fenetre = Tk()
fenetre.title("Exemple") # titre de la fen tre principale
fenetre.geometry("520x220") # dimension de la fen tre principale
Titre (Label) On cr e un objet-label titre . Les attributs sont : fenetre linterface et le texte afficher
titre = Label(fenetre, text = " PYTHON, est fantastique ! " )
la m thode pack place lobjet titre dans "fenetre "
titre.pack()
Publicité
Ajout des autres widgets
.........................
On cr e une boucle sur "fenetre " pour quelle surveille en permanence ce qui sy passe.
fenetre.mainloop()
2. Les widgets Tkinter
14
Les contr les les plus utilis s :
Widget
Description
Label
Entry
Text
Un widget utilis pour afficher du texte l' cran
Un widget de saisie de texte qui n'autorise qu'une seule ligne de texte
Un widget de saisie de texte qui permet la saisie de texte multiligne
Checkbutton
est utilis pour afficher un certain nombre doptions sous forme de cases
cocher. Lutilisateur peut s lectionner plusieurs options la fois.
Radiobutton
Listbox
Combobox
Button
Frame
Canvas
est utilis pour afficher un certain nombre doptions sous forme de boutons
radio. Lutilisateur ne peut s lectionner quune seule option la fois.
est utilis pour fournir une liste doptions un utilisateur.
liste avec une barre de d filement incluse
Un bouton qui peut contenir du texte et peut effectuer une action lorsque
vous cliquez dessus
Une r gion rectangulaire utilis e pour regrouper les widgets associ s ou
fournir un remplissage entre les widgets
est une zone rectangulaire destin e contenir des dessins ou dautres figures
complexes.
2.1 Le contr le zone de texte
15
Une zone de texte sert ins rer dans une fen tre graphique une l gende indiquant ce quil faut
ins rer dans contr le voisin. Une zone de texte correspond la classe Label.
Pour cr er une zone de texte, il suffit d crire la ligne suivante :
zone_texte =Label (fenetre, text = "zone de texte")
Il est possible de modifier les couleurs du texte,du fond ,de la police et sa taille:
label = Label(fenetre, text="Salut tout le monde !", fg="blue", bg="yellow" font = ("Helvetica", 32))
2.2 Le contr le zone de saisie
16
Une zone de saisie a pour but de recevoir une information entr e par lutilisateur. Une zone de
saisie correspond la classe Entry ; la syntaxe est la suivante :
saisie = tkinter.Entry ()
Pour modifier le contenu de la zone de saisie, il
faut utiliser la m thode insert qui ins re un texte
une position donn e.
saisie.insert (pos, "contenu")
Pour obtenir le contenu de la zone de saisie
contenu = saisie.get ()
Pour supprimer le contenu de la zone de saisie
entre deux positions
saisie.delete (pos1, pos2)
Exemple :
saisie.delete (0, len(saisie.get()))
2.3 Le contr le zone de saisie plusieurs lignes
17
saisie = tkinter.Text()
Pour modifier le contenu de la zone de saisie, on utilise
insert qui ins re un texte une position donn e.
Pour obtenir le contenu de la zone de saisie, il faut utiliser la
m thode get qui retourne le texte entre deux positions. La
position de fin nest pas connue, on utilise la cha ne de
caract res "end" pour d signer la fin de la zone de saisie.
Pour supprimer le contenu de la zone de saisie entre deux
positions
Pour modifier les dimensions de la zone de saisie plusieurs
lignes
pos = "0.0"
saisie.insert(pos,"premi re ligne\n
seconde ligne")
pos1 = "0.0"
pos2 = "end" #ou tkinter.END
contenu = saisie.get (pos1, pos2)
saisie.delete (pos1, pos2)
Exemple :
saisie.delete(0, len(saisie.get()))
saisie.config(width,height)
width <--> largeur
height <--> hauteur en lignes
Exemple:
saisie.config (width = 10,height = 5)
2.4 Le contr le case cocher
18
Le widget Checkbutton est utilis pour afficher un certain nombre doptions un
utilisateur sous forme de case cocher.
La syntaxe est la suivante :
case = Checkbutton ( master, option = value, ... )
O :
master : Cela repr sente la fen tre parent.
option : Voir ci-dessous la liste des options les plus utilis es
Tableau de quelques options pour le widget Checkbutton
Option
Description
bd
bg
fg
font
height
justify
width
Largeur de bordure en pixels. La valeur par d faut est 2.
Couleur de fond normale.
Couleur normale du premier plan (texte).
Police de texte utiliser pour l tiquette du Checkbutton.
Hauteur du Checkbutton selon les lignes de texte.
"LEFT pour justifier le texte gauche de chaque ligne;
"CENTER pour centrer le texte;
"RIGHT pour justifier le texte droite.
Largeur du bouton en lettres (si du texte) ou en pixels (si une image).
19
Pour utiliser un Checkbutton, on doit cr er une variable Tkinter et pour inspecter l tat du
bouton, on doit interroger la variable.
from tkinter import *
gui = Tk()
var = IntVar() #m morise la valeur de la case cocher
c = Checkbutton(gui, text="Ma CheckBox", variable=var) # g re lapparence au niveau de linterface graphique
c.pack()
mainloop()
Par d faut, la variable est d finie sur 1 si le bouton est s lectionn , sinon 0. Vous pouvez modifier ces
valeurs laide des options onvalue et offvalue.
c = Checkbutton(gui, text="Ma CheckBox", variable=var, onvalue = 1, offvalue = 0)
Pour savoir si la case est coch e ou non, il suffit dex cuter linstruction :
v.get () # gal 1 si la case est coch e, 0 sinon
Pour cocher et d cocher la case, il faut utiliser les instructions suivantes :
case.select () # pour cocher
case.deselect () # pour d cocher
Il est possible dassocier du texte lobjet case cocher :
case.config (text = "case cocher")
2.5 Le contr le bouton radio
20
Le Radiobutton est un widget Tkinter standard utilis pour impl menter un bouton choix multiples.
La syntaxe est la suivante :
btn = Radiobutton ( master, option = value, ... )
O :
master : Cela repr sente la fen tre parent.
option : Voir ci-dessous la liste des options les plus utilis es
Tableau de quelques options pour le widget Checkbutton
Option
Description
bd
bg
fg
font
height
justify
width
value
Largeur de bordure en pixels. La valeur par d faut est 2.
Couleur de fond normale.
Couleur normale du premier plan (texte).
Police de texte utiliser pour l tiquette du radiobutton.
Le nombre de lignes de texte (pas de pixels) sur le bouton radio. La valeur par d faut est 1.
"LEFT pour justifier le texte gauche de chaque ligne;
"CENTER pour centrer le texte;
"RIGHT pour justifier le texte droite.
Largeur du bouton en lettres (si du texte) ou en pixels (si une image).
Lorsquun bouton radio est activ par lutilisateur, sa variable de contr le est d finie sur sa valeur
actuelle. Si la variable de contr le est un StringVar, on donne chaque bouton radio du groupe
une valeur de type String. Si la variable de contr le est un IntVar, on donne chaque radiobutton
une valeur enti re.
Exemple :
21
from tkinter import *
def sel():
ch = "Vous avez s lectionn : " + v.get()
mess.config(text = ch)
gui = Tk()
v = StringVar()
v.set("Python") # initialiser
Avant s lection dun choix
r1 = Radiobutton(gui, text="Python", variable=v, value="Python", command=sel)
Apr s s lection dun choix
r1.pack(anchor = W) #positionner le widget selon la direction donn e
r2 = Radiobutton(gui, text="Java", variable=v, value="Java", command=sel)
r2.pack(anchor = W)
r3 = Radiobutton(gui, text="PHP", variable=v, value="PHP", command=sel)
r3.pack(anchor = W)
mess = Label()
mess.pack()
gui.mainloop()
2.6 Le contr le liste
22
Le widget Listbox est utilis pour afficher une liste d l ments partir de laquelle un utilisateur peut
s lectionner un certain nombre d l ments.
La syntaxe est la suivante :
liste = Listbox ( master, option = value, ... )
Tableau de quelques options
option : Voir ci-dessous la liste des options les plus utilis es
O : master : Cela repr sente la fen tre parent.
Option
bd
bg
Publicité
fg
font
height
width
selectmode
Description
Largeur de bordure en pixels. La valeur par d faut est 2.
Couleur de fond normale.
Couleur normale du premier plan (texte).
Police de texte utiliser pour la liste.
Nombre de lignes (pas de pixels!) Affich es dans la zone de liste. La valeur par d faut est 10.
La largeur du widget en caract res. La valeur par d faut est 20.
D termine le nombre d l ments pouvant tre s lectionn s et la mani re dont les l ments sont
s lectionn s:
"BROWSE: on peut s lectionner quune seule ligne dans la liste. Si on clique sur un l ment, puis
on fait glisser vers une autre ligne, la s lection suivra la souris. Cest la valeur par d faut.
"SINGLE: on peut s lectionner quune seule ligne et on ne peut pas faire glisser la souris.
"MULTIPLE :on peut s lectionner nimporte quel nombre de lignes la fois. Le clic sur une ligne
permet de choisir si elle est s lectionn e ou non.
"EXTENDED: on peut s lectionner nimporte quel groupe de lignes adjacentes la fois en cliquant
sur la premi re ligne et en faisant glisser jusqu la derni re ligne.
23
Voici les m thodes les plus utilis es pour ce widget:
M thode
activate(index)
curselection()
delete(first, last=None)
get(first, last=None)
index(i)
insert(index, *elements)
nearest(y)
see(index)
size()
Description
S lectionne la ligne sp cifi e par lindex donn .
Renvoie un tuple contenant les num ros de ligne du ou des l ments s lectionn s, en
comptant partir de 0. Si rien nest s lectionn , retourne un tuple vide.
Supprime les lignes dont les indices sont dans la plage . Si le deuxi me
argument est omis, la ligne avec lindex first est supprim e.
Renvoie un tuple contenant le texte des lignes dont les indices sont dans la plage , last est inclus. Si le deuxi me argument est omis, retourne le texte de la ligne la
plus proche du premier.
Positionne la partie visible de la liste de sorte que la ligne contenant lindex i soit en
haut du widget.
Ins rez une ou plusieurs nouvelles lignes dans la liste avant la ligne sp cifi e par
index. Utilisez END comme premier argument si vous souhaitez ajouter de nouvelles
lignes la fin de la liste.
Renvoie lindex de la ligne visible la plus proche de la coordonn e y.
Ajustez la position de la liste afin que la ligne r f renc e par lindex soit visible.
Renvoie le nombre de lignes dans la liste.
Exemple :
24
from tkinter import *
gui = Tk()
liste = Listbox(gui)
liste.insert(1, "Blue")
liste.insert(2, "Red")
liste.insert(3, "Green")
liste.insert(4, "Yellow")
liste.insert(5, "Orange")
liste.insert(6, "Black")
liste.pack()
gui.mainloop()
R cup ration des l ments de la liste :
for i in range (0, liste.size()):
print(liste.get (i))
Blue
Red
Green
Yellow
Orange
Black
2.7 Le contr le liste avec barre de d filement Combobox
25
Cest une liste avec une barre de d filement incluse.
Exemple :
import tkinter
import tkinter.ttk as ttk
root = tkinter.Tk()
o =ttk.Combobox(root, values=["ligne 1", "ligne 2", "ligne3", "ligne4"])
o.pack ()
def print_file () :
print(o.get())
b = tkinter.Button (root, text="print")
b.config (command = print_file)
b.pack ()
root.mainloop()
2.8 Le contr le bouton
26
Voici la syntaxe pour cr er ce widget:
btn = Button ( master, option = value, ... )
O : master : Cela repr sente la fen tre parent.
option : Voir ci-dessous la liste des options les plus utilis es
Tableau de quelques options
M thode
bd
bg
command
fg
font
height
highlightcolor
image
justify
state
width
Description
Largeur de bordure en pixels. La valeur par d faut est 2.
Couleur de fond normale.
Fonction ou m thode appeler lorsquon clique sur le bouton.
Couleur normale du premier plan (texte).
Police de texte utiliser pour l tiquette du bouton.
Hauteur du bouton selon les lignes de texte (pour les boutons textuels) ou en pixels (pour les
images).
La couleur du focus lorsque le widget a le focus.
Image afficher sur le bouton (au lieu du texte).
"LEFT pour justifier le texte gauche de chaque ligne;
"CENTER pour centrer le texte;
"RIGHT pour justifier le texte droite.
D finissez cette option sur DISABLED pour griser le bouton et le d sactiver. La
valeur ACTIVE lorsque la souris est dessus. La valeur par d faut est NORMAL.
Largeur du bouton selon les lettres (si du texte) ou en pixels (si une image).
27
Exemple :
from tkinter import *
from tkinter import messagebox
def affich():
messagebox.showinfo("Cours Python", "Bienvenue dans notre cours!")
Au clic sur cliquez ici!
gui = Tk()
gui.geometry("200x100")
btn = Button(gui, text ="Cliquez ici!", command = affich)
btn.pack()
gui.mainloop()
2.9 Le Cadre
28
Un cadre Frame est un conteneur pour dautres widgets. Il permet de r aliser des
groupes coh rents de widgets.
cadre = Frame(fenetre)
Un cadre LabelFrame a les caract ristiques dun Frame plus la possibilit dafficher une
tiquette.
from tkinter import *
gui = Tk()
lframe = LabelFrame(gui, text="Ceci est un LabelFrame")
lframe.pack(fill="both", expand="yes")
btn = Button(lframe, text ="Cliquez ici!")
btn.pack()
gui.mainloop()
2.10 Le canvas
29
cest une surface permettant de dessiner des formes g om triques (rectangles, disques, du texte,
etc) et de les manipuler (personnalisation, d placement, suppression, etc). Ce type de widget permet
de cr er des jeux de toutes sortes.
monCanvas = Canvas(fenetre, width=&, height=.., bg=&, &)
Les formes g om triques sont appel s des items.
Voici les items les plus utiles quun canevas peut g n rer :
Motif g om trique
Item Tkinter
segment de droite, fl che create_line
rectangle carr
cercle ellipse
texte
image png, gif
polygone
arcs de cercle, dellipse
create_rectangle
create_oval
create_text
create_image
create_polygon
create_arc
Exemple :
from tkinter import *
root=Tk()
cnv=Canvas(root, width=200, height=200, bg="silver")
cnv.pack()
cnv.create_rectangle((10, 20), (200, 100),fill='white')
root.mainloop()
3- Gestionnaires de positionnement
30
Tous les widgets Tkinter ont acc s des m thodes de gestion de g om trie sp cifiques, qui
ont pour but dorganiser les widgets dans la zone de widget parent. Tkinter expose les
classes de gestionnaire de positionnement suivantes: pack, grid et place.
La m thode pack() : Ce gestionnaire de positionnement organise les widgets en blocs
avant de les placer dans le widget parent.
La m thode place() : Ce gestionnaire de positionnement organise les widgets en les
pla ant dans une position sp cifique dans le widget parent.
La m thode grid() : Ce gestionnaire de positionnement organise les widgets dans une
structure semblable une table dans le widget parent.
3-1 La m thode pack
31
Cette m thode empile les objets les uns la suite des autres. Par d faut, elle les empile les uns
en dessous des autres. Lexemple suivant produit lempilement des objets.
import tkinter
from tkinter import messagebox
gui = tkinter.Tk()
Publicité
l = tkinter.Label (text = "premi re ligne")
l.pack ()
s = tkinter.Entry ()
s.pack ()
e = tkinter.Label (text = "seconde ligne")
e.pack ()
gui.mainloop()
Les objets sont empil s laide de la m thode pack les uns en
dessous des autres
On peut aussi les empiler les uns droite des autres gr ce loption side.
import tkinter
from tkinter import messagebox
gui = tkinter.Tk()
l = tkinter.Label (text = "premi re ligne")
l.pack (side = tkinter.RIGHT)
s = tkinter.Entry ()
s.pack (side = tkinter.RIGHT)
e = tkinter.Label (text = "seconde ligne")
e.pack (side = tkinter.RIGHT)
gui.mainloop()
32
La m thode pack poss de trois options :
side choisir entre tkinter.TOP (valeur par d faut), tkinter.LEFT , tkinter.BOTTOM
, tkinter.RIGHT
expand : gale True ou False (valeur par d faut), si cette option est vraie, lobjet
occupe tout lespace.
fill : gale None (valeur par d faut), X, Y, BOTH, lobjet s tend selon un axe (X ou Y
ou les deux).
Remarque :
Lorsquun objet nest plus n cessaire, il est possible de le faire dispara tre en appelant la
m thode pack_forget
s.pack_forget()
3-2 La m thode grid
33
La m thode grid suppose que la fen tre qui les contient est organis e selon une grille (matrice)
dont chaque case peut recevoir un objet. Le coin sup rieur gauche a la valeur de ligne 0 et la
valeur de colonne 0.
La m thode grid poss de plusieurs options, parmi lesquelles:
"column : colonne dans laquelle sera plac e lobjet.
"columnspan : nombre de colonnes que doit occuper lobjet.
"row : ligne dans laquelle sera plac e lobjet.
"rowspan : nombre de lignes que doit occuper lobjet.
"padx : Marge externe horizontale.
"pady : Marge externe verticale.
"sticky = position
La m thode grid_forget qui permet de faire dispara tre les objets.
s.grid_forget() # disparition
from tkinter import *
root = Tk()
root.title("profile")
root.config(bg="lightgrey")
34
Photo de profile
image = PhotoImage(file="profile.png")
small_img = image.subsample(4,4) #Renvoie un chantillon qui n'utilise que chaque Xe ou Ye pixel
img = Label(root, image=small_img)
img.grid(row=0, column=0, rowspan=6, padx=5, pady=5)
titre= Label(root, text="Connexion utilisateur ", bg="lightcyan")
titre.grid(row=0, column=1, columnspan=4, padx=5, pady=5)
Label(root, text="user", bg="lightgrey").grid(row=1, column=1, padx=5, pady=5, sticky=E)
name = Entry(root, bd=3)
name.grid(row=1, column=2, padx=5, pady=5)
Label(root, text="Password", bg="lightgrey").grid(row=3, column=1, padx=5, pady=5, sticky=E)
prenom = Entry(root, bd=3)
prenom.grid(row=3, column=2, padx=5, pady=5)
conn = Button(root, text="connexion!", bg="#6FAFE7", width=15)
conn.grid(row=4, column=2, padx=5, pady=5)
root.mainloop()
3-3 La m thode place
35
La m thode place permet de placer chaque objet une position d finie par des
coordonn es.
import tkinter
from tkinter import messagebox
gui = tkinter.Tk()
l = tkinter.Label(text="premi re ligne")
l.place (x=10, y=50)
gui.mainloop()
Remarque :
La m thode place_forge qui permet de faire dispara tre les objets.
l.place_forget() # disparition
4. Les v nements
36
Une application Tkinter consiste essentiellement en une boucle, d clench e par la m thode
mainloop(), scrutant les v nements (events). Ces v nements peuvent provenir du clavier
(touche frapp e, enfonc e, rel ch e), de la souris (clic gauche ou droit, glisser/d placer...) ou du
programme lui-m me.
La d tection de ces v nements est automatique, il suffit de sp cifier comment lier un
v nement particulier l'action qui doit lui correspondre. C'est l'objet de la m thode bind() (lier
en anglais).
La m thode bind permet dex cuter une fonction lorsquun certain v nement donn est
intercept par un objet donn . La fonction ex cut e accepte un seul param tre de type Event qui
est l v nement qui la d clench e.
Cette m thode a pour syntaxe :
w.bind(evt, fonction)
O :
w est lidentificateur de lobjet devant intercepter l v nement d sign par la cha ne de
caract res evt dont les valeurs possibles sont d crites apr s.
fonction est la fonction qui est appel e lorsque l v nement survient.
Remarques :
- La fonction doit obligatoirement tre d clar e avant son d clenchement dans le code du programme.
- La fonction a obligatoirement un param tre evt : def fonc(evt) : Ce dernier permet de r cup rer les
informations de l v nement.
37
38
Exemple :
39
from tkinter import*
def pointeur(evt):
position.configure(text="Clic d tect en X = "+str(evt.x)+", Y = "+str(evt.y))
fen=Tk()
fen.geometry("400x200" )
fond=Canvas(fen, width=200, height=150, bg="light yellow")
fond.pack()
position=Label(fen,text="Clic d tect en X =''+'','' Y = ''")
position.pack()
fen.bind("<Button-1>", pointeur)
fen.mainloop()
La m thode bind() associ la fen tre fen lie l v nement clic-gauche ( ) la fonction 'pointeur'.
Celle ci r cup re les coordonn es de l'objet evt par les instructions evt.x et evt.y
Module 12:
Le module Numpy
1. Pr sentation
41
Il existe de nombreux modules scientifiques sous Python :
" NumPy ( Numerical Python) : est une biblioth que open source associ e au langage Python, cr e
sp cialement pour le calcul scientifique, notamment le calcul matriciel.
Documentation officielle : https://numpy.org/doc/
" SciPy : fonctions math matiques puissantes s'appliquant aux tableaux g n r s par NumPy. C'est la bo te
outil num rique pour les tableaux NumPy. Elle contient des op rations sp cifiques (alg bre lin aire,
statistique&) de manipulation de tableaux, de plus haut niveau que celles de NumPy ;
" matplotlib : permet le trac de graphes de fonctions.
1. Pr sentation
NumPy est un package du langage Python destin manipuler des tableaux (vecteurs
et matrices).
Ce package fournit de multiples fonctions:
" Pour un acc s rapide aux donn es (ex. extraction, recherche)
" Pour les calculs math matiques, statistiques et logiques (ex. sum, min, max, sort)
" Pour lint gration de C/C++.
Les tableaux Numpy sont plus performants (rapidit , gestion de la volum trie) que les
collections usuelles de Python (les Listes)
Les tableaux Numpy sont au cSur de presque tout l' cosyst me de data science en
Python.
Les diff rentes dimensions sont appel es des axes,
tandis que le nombre de
dimensions ( 0 pour un scalaire, 1 pour un vecteur, 2 pour une matrice, etc) est appel
rang.
42
import numpy as np
pour importer le module numpy
43
Diff rence entre les listes et les tableaux array
Un tableau ressemble beaucoup une liste, avec ces avantages:
Un tableau a une taille fix e lors de sa cr ation.
Tous les l ments dun tableau doivent tre du m me type (lui aussi fix la cr ation).
Vite
Pratique
Moins de m moire
2. Cr er un tableau
Fonction
R le
Exemple
array(object, dtype, &)
Cr er un tableau numpy
import numpy as np
a= np.array([1, 2, 5, 3])
mat = np.array([ [3.2, 7, 9], [4, 8.75, 0] ])
zeros(shape, dtype, &)
Retourne un nouveau tableau
rempli de z ros. Le type de
donn es par d faut est
numpy.float64
v = np.zeros(5)
print(v)
m = np.zeros(shape=(3,3), dtype=int)
m= np.zeros((3,3), int)
ones(shape, dtype, &)
Retourne un nouveau tableau
rempli de nombre virgule
flottante de valeur 1
m = np.ones(shape=(3,5))
np.ones(shape=(3,5), dtype=int)
[[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]
full(shape, full_value, &) Retourne un nouveau tableau
rempli avec la valeur donn e.
Un tableau 4*2 rempli de la valeur 3.14
np.full((4,2),3.14)
identity( n , dtype =
Aucun )
44
Retourne un tableau
d'identit . Avec n Nombre de
lignes et dtype le type de
donn es de la sortie. La
valeur par d faut est float.
Publicité
np.identity(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
Fonction
R le
Exemple
arange(debut, fin, pas, &)
g n re un tableau une dimension
form dentiers ou de flottants
(Contrairement la fonction range),
commen ant debut, et finissant
fin (valeur exclue), avec un pas.
La taille de step par d faut est 1.
np.arange(start=1, stop=10)
np.arange(0, 20, 2).reshape(2,5)
linspace(debut, fin, num, &)
Renvoie des nombres r guli rement
espac s sur un intervalle sp cifi .
np.linspace(start=0, stop=10,num=5)
random.randint(low, high, size, &) Renvoie des entiers al atoires dans
np.random.randint(10,100,5)
[low, high[.
Si high est nul, alors les r sultats
proviennent de [0, low[.
np.random.randint(10, size=(2,2))
random.uniform(low, high, size,
&)
Retourne des r els al atoires dans [low,
high[.
np.random.uniform(2, 5, size=3)
random.random(size)
Retourne des r els al atoires dans [0.0,
1.0[
np.random.random(2)
45
Cr ation partir dun autre objet
46
Conversion partir dun fichier
Les donn es peuvent tre stock es dans un fichier texte :
loadtxt pour charger,
savetxt pour sauver
import numpy as np
#charger partir d'un fichier #typage explicite possible
m = np.loadtxt("vecteur.txt",dtype=float)
print(m)
#[[ 1. 12. 14. 17. 15. 5. 6.5 10.5]
n = np.loadtxt("vecteur.txt",dtype=int)
print(n) #[ 1 12 14 17 15 5 6 10]
Conversion dune collection (type standard Python)
#liste de valeurs
lst = [1.2,3.1,4.5]
print(type(lst)) # <class " list " >
#conversion partir d'une liste
a = np.asarray(lst,dtype=float)
print(type(a)) # <class " numpy.ndarray " >
print(a) # [1.2 3.1 4.5]
Exemple 1: Fichier texte
Exemple 2: Fichier csv
47
3. Caract ristiques dun tableau
Fonction/Attribut
R le
Type(tableau)
Retourne le type de la structure
Exemple:
tableau.dtype
tableau.ndim
tableau.size
tableau.shape
Retourne le type d l ments du
tableau
Retourne le nombre des
dimensions du tableau
Retourne le nombre d l ments
du tableau
Retourne le nombre des lignes
et des colonnes du tableau
48
3. Acc der aux l ments dun tableau
v
Indice(positif)
Indice(n gatif
)
i
0
1
2
3
j
-4
-3
-2
-1
m
1
0
-4
0
-4
1
5
9
13
2
1
-3
1
-3
2
6
10
14
3
2
-2
2
-2
3
7
11
15
4
3
-1
3
-1
4
8
12
16
n
Pour les vecteurs, acc der un l ment d'indice i en utilisant la syntaxe:
tableau[ i ]
Pour les matrices, acc der l l ment dindice i,j en utilisant la syntaxe :
tableau [ i , j ] ou tableau [ i ] [ j ]
Pour acc der aux l ments dun tableau en utilisant la syntaxe:
tableau[ lower : upper : step ] ; ) # 1
print(m[-1,-1]) #16
n=m[1:3,2:4]
print(n)
49
50
4. Modification dun tableau
Fonction/Op ration
R le
Exemple
Le signe "="
Remplacer les valeurs dun
tableau
v=np.arange(1,5)
v[1]=9
print(v) # [1, 9, 3, 4]
m=np.arange(1,17).reshape(4,4)
m[0] = [11, 12, 13, 14]
m[1] = 100
m[:,2:4] = 77
append(arr, values,
axis)
ajouter une valeur, plac e
en derni re position
Insert(arr, indices,
values, axis)
ins rer une valeur dans un
tableau
m=np.arange(1,17).reshape(4,4)
ligne = np.array([[17, 18, 19, 20]]) # Cr er un tableau ligne (1,4)
m= np.append(m, ligne, axis=0) # Ajouter une ligne la fin
col = np.array([[7],[7],[7],[7],[7]]) # Cr er un tableau col (5,1)
m=np.append(m, col, axis = 1) # ajouter une colonne la fin
m=np.arange(1,17).reshape(4,4)
m=np.insert(m,1, [[0,0,0,0]],axis=0) # ins rer une ligne lindice 1
ins rer deux lignes aux indices respectifs 2 et 3
m = np.insert(m, [2,3],[[5,55],[5,55],[5,55],[5,55] ,[5,55]],axis=1)
51
Fonction/Op ration
R le
Exemple
delete(arr,indices,axis)
Supprimer via indice
v = np.array([1.2,2.5,3.2,1.8])
une plage dindices est possible
v = np.delete(v,2)
resize(arr, new_shape)
Redimensionner un tableau, 1 valeur pour
vecteur, couple de valeurs pour matrice
m = np.ones(shape=(2,2))
m=np.resize(m,(3,3))
concatenate((a1,a2,..,an), axis) Concat ner une s quence de tableaux le
long d'un axe existant.
Si les tableaux sont de dimension > 1, on<...