Algo Et Programmation en Python
Algo Et Programmation en Python
Younes Derfoufi
11 mai 2019
Table des matières
1
TABLE DES MATIÈRES 2
Les tutoriels vidéos sont disponibles sur ma chaine Youtube Très Facile :
1.1 Introduction
5
CHAPITRE 1. ALGORITHMIQUE EN LANGAGE PYTHON 6
Une variable python possède toujours un type, même s’il est non déclarée. le type se
définie au moment de l’introduction de la variable et peut être changé par la suite, ce qui
justifie le dynamisme et la puissance du langage Python
1 i f ( condition ) :
2 instructions . . .
3 else :
4 autres i n s t r u c t i o n s . . .
Remarque 1. Noter que dans la boucle for i in rang(1,n) le dernier qui est n n’est pas
inclus ! Cela veut dire que la boucle s’arrête à l’ordre n-1.
8. find(str, beg = 0 end = len (chaîne)) : Déterminer si str apparaît dans une chaîne
ou dans une sous-chaîne de chaînes si l’index de début et l’index de fin sont spécifiés,
end renvoie return s’il est trouvé et -1 dans le cas contraire.
9. format(string s) : remplace les accolades par la variable string s (voir exemple ci-
dessous : 1.6.2)
10. index(str, beg = 0, end = len (chaîne)) : Identique à find (), mais déclenche une
exception si str n’est pas trouvé.
11. isalnum() : Retourne true si la chaîne a au moins 1 caractère et que tous les caractères
sont alphanumériques et false sinon.
12. isalpha() : Retourne vrai si la chaîne a au moins 1 caractère et que tous les caractères
sont alphabétiques et faux sinon.
13. isdigit() : Renvoie true si la chaîne ne contient que des chiffres et false sinon.
14. islower() : Retourne true si la chaîne a au moins 1 caractère en casse et que tous les
caractères en casse sont en minuscule et false sinon.
15. isnumeric() : Renvoie true si une chaîne unicode contient uniquement des caractères
numériques et false sinon.
16. isspace() : Renvoie true si la chaîne ne contient que des caractères d’espacement et
false sinon.
17. istitle() : Retourne true si la chaîne est correctement "titlecased" et false sinon.
18. isupper() : Renvoie true si string contient au moins un caractère et que tous les ca-
ractères sont en majuscule et false sinon.
19. join(seq) : Fusionne (concatène) les représentations sous forme de chaîne d’éléments
en séquence seq dans une chaîne, avec chaîne de séparation.
20. len(chaîne) : Retourne la longueur de la chaîne
21. ljust(largeur [, remplissage]) : Renvoie une chaîne complétée par des espaces avec
la chaîne d’origine justifiée à gauche pour un total de colonnes de largeur.
22. lower() : Convertit toutes les lettres majuscules d’une chaîne en minuscules.
23. lstrip() : Supprime tous les espaces en début de chaîne.
24. maketrans() : Renvoie une table de traduction à utiliser dans la fonction de traduction.
25. max(str) : Renvoie le caractère alphabétique maximal de la chaîne str.
26. min(str) : Renvoie le caractère alphabétique minimal de la chaîne str.
27. replace(ancien, nouveau [, max]) : Remplace toutes les occurrences de old dans
string par new ou au maximum max si max donné.
28. rfind(str, beg = 0, end = len(chaîne)) : Identique à find(), mais recherche en arrière
dans string.
29. rindex(str, beg = 0, end = len (chaîne)) : Identique à index(), mais recherche en
arrière dans string.
CHAPITRE 1. ALGORITHMIQUE EN LANGAGE PYTHON 12
30. rjust(largeur, [, remplissage]) : Renvoie une chaîne complétée par des espaces avec
la chaîne d’origine justifiée à droite, avec un total de colonnes de largeur.
31. rstrip() : Supprime tous les espaces de fin de chaîne.
32. split(str = "", num = string.count (str)) : Divise la chaîne en fonction du délimiteur
str (espace si non fourni) et renvoie la liste des sous-chaînes ; divisé en sous-chaînes
au maximum, le cas échéant.
33. splitlines(num = string.count (’\ n’)) : Fractionne la chaîne de tous les NEWLINE
(ou num) et renvoie une liste de chaque ligne sans les NEWLINE.
34. startswith(str, beg = 0, end = len (chaîne)) : Détermine si string ou une sous-
chaîne de chaîne (si les index de début et de fin d’index de fin sont indiqués) commence
par la sous-chaîne str ; renvoie vrai si oui et faux sinon.
35. strip([chars]) : Effectue lstrip () et rstrip () sur chaîne.
36. swapcase() : Inverse la casse de toutes les lettres d’une chaîne.
37. title() : Retourne la version "titlecased" de la chaîne, c’est-à-dire que tous les mots
commencent par une majuscule et le reste est en minuscule.
38. translate(table, deletechars = "") : Traduit la chaîne en fonction de la table de
traduction str (256 caractères), en supprimant celles de la chaîne del.
39. upper() : Convertit les lettres minuscules d’une chaîne en majuscules.
40. zfill(largeur) : Renvoie la chaîne d’origine laissée avec des zéros à un total de carac-
tères de largeur ; destiné aux nombres, zfill () conserve tout signe donné (moins un
zéro).
41. isdecimal() : Renvoie true si une chaîne unicode ne contient que des caractères déci-
maux et false sinon.
42. s[i : j] : Extrait la sous chaine de s depuis la ième position jusqu’à la jème non incluse
43. s[ i : ] : Extrait la sous chaine de s depuis la ième position jusqu’à la fin de la chaine
44. s[ : j ] : Extrait la sous chaine de s depuis le début jusqu’à la jème position non incluse
Exemple. String.format
1 nom = ”David”
2 age = 37
3 s = ’ Bonjour , {}, vous avez {} ans ’ .format(nom, age)
4 print ( s ) # a f f i c h e ’ Bonjour , David , vous avez 37 ans ’
Exemple. —
1 #Création d ’une l i s t e
2 myList = [ ”Python” , ” Java ” , ”PHP” ]
3 # Affichage de l a l i s t e
4 print ( myList )
3. Le mot clé del supprime l’élément à l’index spécifié( del permet également de supprimer
complètement la liste)
4. La méthode clear() vide la liste :
Remarque 3. Une fois un tuple est créé, vous ne pouvez pas modifier ses valeurs. Les tuples
sont immuables.
Pour accéder à une valeur à partir du dictionnaire, on utilise le nom du dictionnaire suivi
de la clé correspondante entre crochets :
1 dic = {key1 : valeur1 , key2 : valeur2 , key3 : valeur3 , . . . }
2 print ( dic [key1]) # a f f i c h e valeur1
Remarque 5. On peut aussi parcourir les clés et les valeurs en même temps en passant à la
méthode items()
Dans le cas d’une clé inexistante, la même méthode cité ci-dessus, permet d’ajouter des
éléments au dictionnaire :
Un dictionnaire est doté d’une autre méthode : popitem() qui permet de supprimer le
dernier élément
3 # vider l e d i c t i o n n a i r e
4 stock . clear ()
5 print ( stock )
6 # a f f i c h e un d i c t i o n n a i r e vide : {}
Remarque 6. Les ensembles ne sont pas ordonnés, les éléments apparaitront donc dans un
ordre aléatoire.
- On peut aussi ajouter plusieurs éléments en même temps, mais cette fois ci avec la
méthode update() :
Pour supprimer un élément d’un ensemble Python, deux choix s’offrent à vous la méthode
remove() ou la méthode discard()
On crée ensuite une méthode qui permet de construire les objets, appelé constructeur via
l’instruction :
1 def __init__ ( s e l f ) :
24
CHAPITRE 2. PROGRAMMATION ORIENTÉE OBJET POO EN PYTHON 25
1 class Personne :
2 def __init__ ( s e l f ,nom, age) :
3 s e l f .nom = nom
4 s e l f . age = age
5 P = Personne( ” Albert ” ,27)
6 print ( ”Le nom de l a prsonne est : ” , P .nom)
7 print ( ”L ’ age de l a personne est : ” , P . age , ” ans” )
8 # a f f i c h e : Le nom de l a prsonne est : Albert
9 # L ’ age de l a personne est : 27 ans
On peut aussi améliorer la classe en ajoutant des méthodes permettant d’effectuer diffé-
rentes tâches.
10 myClass . myStaticMethod ()
Nous venons de définir une classe Personne dont les attributs sont nom et age. Nous
allons maintenant créer une classe fille nommée Student qui hérite les mêmes méthodes
et propriétés de la classes mère Personne. La syntaxe générale de l’héritage se fait grâce
à la commande :
1 class c l a s s e _ f i l l e ( classe_mère )
Exemple. (complet )
1 #−*− coding : utf−8 −*−
2 class Personne :
3 def __init__ ( s e l f ,nom, age) :
4 s e l f .nom = nom
5 s e l f . age=age
6 # La classe f i l l e Student hérite de l a classe mère Personne
7 class Student (Personne) :
8 # d é f i n i t i o n des a t t r i b u t s des a t t r i b u t s
9 def __init__ ( s e l f ,nom, age , f i l i e r e ) :
10 # héritage des a t t r i b u t s depuis l a classe mère Personne
11 Personne . __init__ ( s e l f ,nom, age)
12 # ajout d ’un nouvel a t t r i b u t f i l i e r e à l a classe f i l l e
13 self . f i l i e r e = f i l i e r e
14 Stud = Student ( ” Albert ” ,27 , ”math” )
15 print ( ”Le nom de l ’ étudiant est : ” ,Stud .nom)
16 print ( ”L ’ age de l ’ étudiant est : ” ,Stud . age)
17 print ( ”La f i l i è r e de l ’ étudiant est : ” ,Stud . f i l i e r e )
1 def somme(x , y) :
2 return x + y
3
4 def d i v i s i o n (x , y) :
5 return x/y
3. On crée ensuite un fichier python pour tester le module par exemple testModule.py
qu’on peut placer sur n’importe quel endroit de notre machine.
4. Sur le fichier testModule.py tapons le code :
1 # On importe l a t o t a l i t é du module
2 from myModule import *
3
Remarque 11. Pour utiliser les fonctions d’un module, il n’est pas nécessaire d’importer la
totalité du module, mais il suffit d’importer juste les fonctions dont on a besoin. Par exemple
si on a besoin d’utiliser uniquement la fonction somme(), on import juste cette dernière.
3.1 Le module os
Le module os permet de gérér l’arboressence des fichiers,il peut être chargé avec la com-
mande : import os
29
CHAPITRE 3. LES FICHIERS EN PYTHON 30
Le [nom du fichier] est le nom du fichier qu’on souhaite ouvrir ou crée. Le mode d’ouverture
comprend les paramètres suivants :
— Le mode ’r’ : ouverture d’un fichier existant en lecture seule,
— Le mode ’w’ : ouverture en écriture seule, écrasé s’il existe déjà et crée s’il n’existe
pas,
— Le mode ’a’ : ouverture et écriture en fin du fichier avec conservation du contenu
existant
— Le mode ’+’ : ouverure en lecture et écriture
— Le mode ’b’ : ouverture en mode binaire
3.3.4 Lecture ligne par ligne avec les méthodes readline() et read-
lines()
3.3.4.1 La méthode readline()
La méthode readline() permet de lire un fichier ligne par ligne. Cette méthode pointe sur
la première ligne lors de sa première exécution, ensuite sur la deuxième ligne lors de seconde
exécution et ainsi à la nème exécution, elle pointe vers la nème ligne.
En combinant la méthode readline() avec la méthode while(), on peut lire la totalité des
ligne d’un fichier :
CHAPITRE 3. LES FICHIERS EN PYTHON 32
La méthode readlines(), renvoie une liste dont les éléments sont les lignes du fichier
On peut aussi lire la totalité des lignes du fichier en appliquant la boucle for :
On peut donc via readlines(), récupérer le nombre de lignes d’un fichier en appliquant la
méthode len() :
En récupérant le nombre des lignes d’un fichier, on peut donc lire la totalité de ses lignes
en utilisant la boucle for :
3.3.4.3 Lecture d’un fichier à une position précise avec la méthode readlines()
La méthode readlines() nous permet aussi de lire un fichier à une position bien précise :
3.7 Exercices
Exercice 14. Ecrire un programme Python qui permet de lire un fichier existant sur le bu-
reau nommé monFichier.txt. On dois préalablement récupérer le nom d’utilisateur via la
commande os.getlogin()
Exercice 15. En mode console, tapez python pour accéder à l’interpréteur Python. Tapez
ensuite les commandes : import os et from os import chdir. Créer ensuite un fichier nommé
monFichier.txt :
1 >>> import os
2 >>> f = open( ” moFichier . t x t ” , ’w ’ )
Exercice 17. En utilisant les méthodes os.rename(), créer un programme python permet-
tant de renommer un fichier existant sur le bureau.
Exercice 18. Créer un programme Python permettant de créer un répertoire nommé mon-
Dossier sur le bureau et de déplacer un fichier qui existe sur le bureau monFichier.txt vers
le répertoire monDossier.
Exercice 19. Créer un programme Python permettant de remplacer les 24 premiers carac-
tères d’un fichier existant sur le bureu par la phrase : ”Le contenu de ce fichier à été
modifié”
Chapitre 4
Remarque. importante ! Vous n’êtes pas obligé de créer la base de données mabase.db,
mais elle sera crée automatiquement dans le même réprtoire que le fichier Python !
Une fois que vous avez une connexion, vous pouvez créer un objet Cursor et appeler sa
méthode execute() pour exécuter des commandes SQL :
1 # Créer un cursor
2 cur = conn . cursor ()
Et maintenant si on veut créer une table au sein de la base SQLite3 mabase.db, il suffit
d’utiliser la commande CREATE TABLE nom_de_la_table :
Code complet :
1 # −*− coding : utf−8 −*−
2 import s q l i t e 3
3 conn = s q l i t e 3 . connect ( ’mabase. db ’ )
4 # Créer un cursor
5 cur = conn . cursor ()
6 # Création de l a requete
36
CHAPITRE 4. PYTHON ET LES BASES DE DONNÉES 37
7 req = ”CREATE TABLE students ( i d INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL,
email TEXT NOT NULL) ”
8 # Exécution de l a requete
9 cur . execute ( req )
10 # Envoyer l a requete
11 conn .commit()
12 # Fermer l a connexion
13 conn . close
Code complet :
1 # −*− coding : utf−8 −*−
2 import s q l i t e 3
3 conn = s q l i t e 3 . connect ( ’mabase. db ’ )
4 cur = conn . cursor ()
5 # Insérer une li gn e de données
6 cur . execute ( ”INSERT INTO students ( ‘nom‘ , ‘ email ‘ ) VALUES ( ’ Albert ’ , ’ albert@gmail .com ’ ) ” )
7 # Engager l ’ opération
8 conn .commit()
9 # Fermer l a connexion
10 conn . close ()
Imaginez que les données qu’on souhaite insérer, sont des valeurs de variables récupérées
depuis un autre fichier ou provenant d’un formulaire d’enregistrement...Dans ce cas l’insertion
des données de cette façon est totalement erronée !:
1 nom = ” Albert ”
2 email = ” albert@gmail .com”
3 cur . execute ( ”INSERT INTO students ( ‘nom‘ , ‘ email ‘ ) VALUES (nom, email ) ” )
4 # TOTALEMENT FAUX !
ATTENTION ! TOTALEMENT FAUX ! Puisque les variables nom et email ne seront pas
interprétées !
Pour corriger l’erreur, on utilise la méthode de formatage des chaines à l’aide du sym-
bole : ” ?”
CHAPITRE 4. PYTHON ET LES BASES DE DONNÉES 38
1 nom = ’ Albert ’
2 email = ’ albert@gmail .com ’
3 age = 22
4 cur = conn . cursor ()
5 cur . execute ( ” Insert into students (nom, email , age) values ( ?, ?, ?) ” ,(nom, email , age) )
Code complet :
1 # −*− coding : utf−8 −*−
2 import s q l i t e 3
3 conn = s q l i t e 3 . connect ( ’mabase. db ’ )
4 nom = ’ Albert ’
5 email = ’ albert@gmail .com ’
6 age = 22
7 # Créer un cursor
8 cur = conn . cursor ()
9 cur . execute ( ” Insert into students (nom, email , age) values ( ?, ?, ?) ” ,(nom, email , age) )
10 conn .commit()
11 conn . close ()
Pour afficher les données, on va parcourir l’objet cursor par un compteur row. La variable
row qui fait le parcourt est un objet tuple dont les constituants sont les valeurs des champs :
id, nom, email, age...
1 for row in r e s u l t :
2 print ( ”ID : ” ,row[0])
3 print ( ”nom : ” ,row[1])
4 print ( ” Email : ” ,row[2])
5 print ( ”Age : ” ,row[3])
mettant d’explorer les bases de données SQLite3. Je vous recommande DB Browser for
SQLite qui est gratuit et très simple d’usage :
1. Téléchargez DB Browser for SQLite,
2. Installez le,
3. Lancez DB Browser
4. Depuis le menu File –> cliquez sur le sous menu Open Databse
5. Sélectionnez ensuite votre base de donnée mabase.db
6. Cliquez finalement sur Browse data pour voir votre table students avec les donnée que
vous venez d’insérer :
40
CHAPITRE 5. INTERFACES GRAPHIQUES EN PYTHON AVEC TKINTER 41
7. Listbox : le widget Listbox est utilisé pour fournir une liste d’options à un utilisateur.
8. menubutton : le widget menubutton est utilisé pour afficher les menus dans votre
application.
9. Menu : le widget Menu est utilisé pour fournir diverses commandes à un utilisateur. Ces
commandes sont contenues dans Menubutton.
10. Message : le widget Message est utilisé pour afficher des champs de texte multilignes
permettant d’accepter les valeurs d’un utilisateur.
11. Radiobutton : le widget Radiobutton est utilisé pour afficher un certain nombre d’op-
tions sous forme de boutons radio. L’utilisateur ne peut sélectionner qu’une option à la
fois.
12. Scale : le widget Echelle est utilisé pour fournir un widget à curseur.
13. Scrollbar : le widget Scrollbar ou barre de défilement est utilisé pour ajouter une fonc-
tionnalité de défilement à divers widgets, tels que les zones de liste.
14. Text : le widget Text est utilisé pour afficher du texte sur plusieurs lignes.
15. Toplevel : le widget Toplevel est utilisé pour fournir un conteneur de fenêtre séparé.
16. Spinbox : le widget Spinbox est une variante du widget standard Tkinter Entry, qui
peut être utilisé pour sélectionner un nombre fixe de valeurs.
17. PanedWindow : le widget PanedWindow est un conteneur pouvant contenir un nombre
quelconque de volets, disposés horizontalement ou verticalement.
18. LabelFrame : un labelframe est un simple widget de conteneur. Son objectif princi-
pal est d’agir comme un intercalaire ou un conteneur pour les dispositions de fenêtre
complexes.
19. tkMessageBox : ce module est utilisé pour afficher des boîtes de message dans vos
applications.
11 maFenetre . mainloop ()
Exemple. label
1 # −*− coding : utf−8 −*−
2 from t k i n t e r import*
3 maFenetre = Tk()
4
5 #Création du l a b e l
6 l b l = Label (maFenetre , text = ”CRMEF OUJDA” )
7 # Placer l e l a b e l sur l a fenêtre
8 l b l . pack ()
9
10 maFenetre . mainloop ()
Remarque 20. On peut aussi utiliser un texte variable, afin de donner la possibilité à l’utilisa-
teur de modifier le texte :
On peut aussi changer le texte via une action associé à un bouton de commande
Exemple. ...
1 # −*− coding : utf−8 −*−
2 from t k i n t e r import *
3 fen = Tk()
4 def action () :
5 var . set( ” J ’ a i changé l e texte en cliquant ” )
6 var = StringVar ()
7 l a b e l = Label ( fen , textvariable=var )
8 var . set( ”CRMEF OUJDA” )
9 b = Button ( fen , text = ”Essayez” , command=action )
10 b . pack ()
11 l a b e l . pack ()
12 fen . mainloop ()
Le widget Text offre des fonctionnalités avancées vous permettant d’éditer un texte mul-
tilingue et de formater son affichage, en modifiant sa couleur et sa police...
Vous pouvez également utiliser des structures élégantes telles que des onglets et des
marques pour localiser des sections spécifiques du texte et appliquer des modifications à ces
zones. De plus, vous pouvez incorporer des fenêtres et des images dans le texte car ce widget
a été conçu pour gérer à la fois le texte brut et le texte mis en forme.
Syntaxe pour du widget Text
1 Nom_du_widget_Text = Texte ( parent , options , . . . )
Voici la liste des options les plus utilisées pour ce widget. Ces options peuvent être utilisées
sous forme de paires clé-valeur séparées par des virgules :
1. bg : la couleur d’arrière-plan par défaut du widget de texte.
2. bd : la largeur de la bordure autour du widget de texte. La valeur par défaut est 2 pixels.
3. cursor : le curseur qui apparaîtra lorsque la souris survolera le widget texte.
4. exportselection : normalement, le texte sélectionné dans un widget de texte est ex-
porté pour être sélectionné dans le gestionnaire de fenêtres. Définissez exportselection
= 0 si vous ne voulez pas ce comportement.
5. font : la police par défaut pour le texte inséré dans le widget.
6. fg : la couleur utilisée pour le texte (et les bitmaps) dans le widget. Vous pouvez changer
la couleur pour les régions marquées ; cette option est juste la valeur par défaut.
7. height : la hauteur du widget en lignes (pas en pixels !), Mesurée en fonction de la taille
de la police actuelle.
8. highlightbackbackground : la couleur du focus est mise en surbrillance lorsque le
widget de texte n’a pas le focus.
9. highlightcolor : la couleur du focus est mise en surbrillance lorsque le widget de texte
a le focus.
10. highlightthickness : l’épaisseur du focus est mise en évidence. La valeur par défaut est
1. Définissez l’épaisseur de la sélection = 0 pour supprimer l’affichage de la surbrillance.
11. insertbackground : la couleur du curseur d’insertion. Le défaut est noir.
12. insertborderwidth : taille de la bordure 3D autour du curseur d’insertion. La valeur
par défaut est 0.
13. insertofftime : le nombre de millisecondes pendant lequel le curseur d’insertion est
désactivé pendant son cycle de clignotement. Définissez cette option sur zéro pour
supprimer le clignotement. La valeur par défaut est 300.
14. insertontime : le nombre de millisecondes pendant lequel le curseur d’insertion est
activé pendant son cycle de clignotement. La valeur par défaut est 600.
15. insertwidth : largeur du curseur d’insertion (sa hauteur est déterminée par l’élément
le plus grand de sa ligne). La valeur par défaut est 2 pixels.
16. padx : la taille du remplissage interne ajouté à gauche et à droite de la zone de texte.
La valeur par défaut est un pixel.
17. pady : la taille du remplissage interne ajouté au-dessus et au-dessous de la zone de
texte. La valeur par défaut est un pixel.
18. relief : l’apparence 3-D du widget de texte. La valeur par défaut est relief = SUNKEN.
19. selectbackground : la couleur de fond à utiliser pour afficher le texte sélectionné.
20. selectborderwidth : la largeur de la bordure à utiliser autour du texte sélectionné.
CHAPITRE 5. INTERFACES GRAPHIQUES EN PYTHON AVEC TKINTER 46
21. spacing1 : cette option spécifie combien d’espace vertical supplémentaire est placé
au-dessus de chaque ligne de texte. Si une ligne est renvoyée à la ligne, cet espace est
ajouté uniquement avant la première ligne occupée à l’écran. La valeur par défaut est
0.
22. spacing2 : cette option spécifie la quantité d’espace vertical supplémentaire à ajouter
entre les lignes de texte affichées lorsqu’une ligne logique est renvoyée à la ligne. La
valeur par défaut est 0
23. spacing3 : cette option spécifie combien d’espace vertical supplémentaire est ajouté
en dessous de chaque ligne de texte. Si une ligne est renvoyée à la ligne, cet espace
est ajouté uniquement après la dernière ligne occupée à l’écran. La valeur par défaut
est 0.
24. state : normalement, les widgets de texte répondent aux évènements de clavier et de
souris ; set state = NORMAL pour obtenir ce comportement. Si vous définissez state =
DISABLED, le widget texte ne répondra pas et vous ne pourrez pas non plus modifier
son contenu par programme.
25. tabs : cette option contrôle la manière dont les caractères de tabulation positionnent
le texte.
26. width : la largeur du widget en caractères (pas en pixels !), Mesurée en fonction de la
taille de la police actuelle.
27. wrap : cette option contrôle l’affichage des lignes trop larges. Définissez wrap = WORD
et la ligne sera coupée après le dernier mot qui convient. Avec le comportement par
défaut, wrap = CHAR, toute ligne trop longue sera brisée par n’importe quel caractère.
28. xscroll : pour que le widget texte puisse défiler horizontalement, définissez cette option
sur la méthode set() de la barre de défilement horizontale.
29. yscroll : pour que le widget texte puisse défiler verticalement, définissez cette option
sur la méthode set() de la barre de défilement verticale.
Il utilise des zones rectangulaires à l’écran pour organiser la mise en page et fournir un
remplissage de ces widgets. Un Frame peut également être utilisé comme classe de base
pour implémenter des widgets complexes.
5.4.5.1 Syntaxe
4 # Création de l a fenêtre p r i n c i p a l e
5 master = Tk()
6 master . geometry( ”400x200” )
7
11 # Emplacement du frame
12 frm . place (x=50, y=20, width=200,height=75)
13
8 # Création du menu p r i n c i p a l ’ F i c h i e r ’
9 menuFichier = Menu(menuBar, t e a r o f f = 0)
10 menuBar. add_cascade( l a b e l=” F i c h i e r ” ,menu=menuFichier )
11
Les widgets ttk utilisent des styles pour définir une apparence et un look agréable. Il faut
donc un peu plus de travail si vous souhaitez un bouton non standard. Les widgets ttk sont
également un peu sous-documentés.
En règle générale, les widgets à thème ttk vous donneront une application plus "native",
mais aux dépens d’une perte de configurabilité.
Il est conseillé d’utiliser les widgets ttk si vous voulez que votre interface graphique ap-
paraisse un peu plus moderne, et les widgets tkinter si vous avez besoin d’un peu plus de
configurabilité. Vous pouvez les utiliser tous les deux dans les mêmes applications.
—————————————————————————–
[1] Docmentation officielle Python : https://docs.python.org/fr/3/
[2] Gérard Swinnen. Apprendre à programmer avec Python 3.Eyrolles
[3] Magnus Lie Hetland. Beginning Python From Novice to Professional, Second Edition.
ISBN-13 (pbk) : 978-1-59059-982-2. Copyright 2008.
[4] Mark Lutz. learning Python . ISBN : 978-1-449-35573-9. 5 ème édition.
[5] Burkhard A. Meier. Python GUI Programming Cookbook. Copyright © 2015 Packt Pu-
blishing. ISBN 978-1- 78528-375-8.
[6] Bhaskar Chaudhary. Tkinter GUI Application Development Blueprints. Copyright © 2015
Packt Publishing. ISBN 978-1-78588-973-8
55