Initiation à la programmation python

Programming, Math · course

Browse all programmation documents

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()

Advertisement

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

Advertisement

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()

Advertisement

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.

Advertisement

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<...