Programmation pour les Sciences 3
L2 – SPI + Mécanique
Introduction
En L1-S1 (PGS1)
Programmation (Python) « en mode texte »
Concepts élémentaires du langage : variables, boucles, fonctions, . . .
Puis, en L1-S2 (PGS2)
Programmation Objet :
Rappel : Classes, données + méthodes
Cette année (L2-S1 - PGS3)
Dans les applications avancées, ex :
recherche -modélisation, simulation
industrie automobile – aeronotique
biologie-santé, modèles moléculaires, ADN
économie-finances
l'aspect visuel peut être très valorisant
→ Interfaces graphiques (Graphical User Interfaces – GUI)
Avantages
accès-interprétation visuels aux résultats
meilleure performance de programmation, réglage des paramètres
De quoi s'agit-il :
Application des compétences acquises pour l'exploitation de
« bibliothèques » de composants graphiques
↔ classes d’objets (attributs + méthodes)
ex pour python
wxPython,
pyQT
pyGTK,
tkinter
Rque : un des intérêts d'une bibliothèque
→ sa portabilité sur plusieurs OS (ex Windows, Linus, Android,...)
Choix pour ce cours : tkinter (Tk Interface)
module Python pour créer des interfaces graphiques (GUI : graphical user interface)
composants graphiques
fenêtre (classe Tk)
bouton (classe Button)
case à cocher (classe Checkbutton)
étiquette (classe Label)
zone de texte simple (classe Entry)
menu (classe Menu)
zone graphique (classe Canvas)
cadre (classe Frame)
...
ex de logiciels développé en Tkinter :
PyMOL (logiciel libre de visualisation de structures chimiques en 3D)
Interface Graphique
fenêtre principale + autres composants tels que :
label pour afficher un texte
zone de saisie de texte (ex login)
boutons pour lancer des actions
...etc
Modèle de programme
1
Initialisation
chargement des modules nécessires
2
Mise en place des composants de l'interface
3
Boucle d'écoute d'événements (souris, clavier, ...)
interactivité avec l’utilisateur: gestion réactions aux évnmts
4
Fin
Exemple1 : interface simple
Fenêtre principale (ex1_1)
from tkinter import *
fen1 = Tk()
[Link]()
Rappel
modules python : scripts (suites d'instructions),
définitions de fonctions,
des classes d’objets
pour utiliser un module, il faut le charger (l'importer)
from tkinter import *
→ importer toutes les classes contenues dans le module tkinter
fen1 = Tk()
→ crée un objet (qui s'appelle) fen1 de la classe Tk()
Rque
la classe Tk(), de la bibliothèque tkinter, contient tout ce qu’il faut pour créer
différents types de fenêtres, de tailles ou de couleurs diverses, avec ou sans barre de
menus, etc...
[Link]()
→ boucle d'écoute d'événements (souris, clavier, . . .) + réactions associées :
interactivité avec l’utilisateur
jusqu'à la fin du programme
Ajout d'un texte (ex1_2)
tex1 = Label(fen1, text='Bonjour tout le monde !', fg='red')
[Link]()
Création
tex1 = Label(fen1, text='Bonjour tout le monde !', fg='red')
→ crée un objet (text1) à partir de la classe Label(), zone de texte statique
arguments : parent, texte, couleur
Placement
[Link]()
→ applique la méthode pack() à l'objet text1 (placement de l'objet dans la fenêtre)
Ajout d'un bouton (ex1_3)
bou1 = Button(fen1, text='Quitter', command = [Link])
[Link]()
Création
bou1 = Button(fen1, text='Quitter', command = [Link])
→ crée un bouton dans fen1 de label 'Quitter'
l’argument command : action si bouton cliqué
Placement
[Link]()
→ affichage bouton dans la fenêtre
Programme final (ex1_4)
from tkinter import *
fen1 = Tk()
tex1 = Label(fen1, text='Bonjour tout le monde !', fg='red')
[Link]()
bou1 = Button(fen1, text='Quitter', command = [Link])
[Link]()
[Link]()
Les classes de widgets tkinter
Boutons
Button
Checkbutton cases à cocher, multi-sélection possible
Radiobutton cases à cocher, 1 seule sélection possible
Texte
Label texte statique ou image
Entry saisie de texte sur une ligne
Menus
Listbox choix parmi une liste
Menu, menubutton menus à choix
Conteneurs
Tk fenêtre principale
Toplevel conteneur de fenêtre séparée
Frame, PanedWindow, . . .
Réglages
Scale réglage à l'aide d'un curseur
Scrollbar réglage vue horizontale/verticale
. . . etc
Chaque widget
arguments obligatoire(s) et/ou optionel(s), certaines valeurs par défaut
méthodes définir/modifier les comportements/caractéristiques
Ex : champs de saisie (Entry)
Utilisé dans les formulaires
syntaxe input = Entry(parent, options)
Options : bg : couleur d’arrière-plan
fg : couleur du texte
bd : taille des bordures (2 pixels) ...
Méthodes : delete( ) : Supprime les caractères
get() : renvoie le texte actuel ...
Association d'un événement à une action
→ à l'aide de l'argument command
ex : bou1 = Button(fen1, text='Quitter', command = [Link])
→ à l'aide de la méthode bind()
syntaxe [Link]('Return', action)
exemples :
touches clavier (ex2_1)
clics souris (ex2_2)
mouvements souris (ex2_3)
Exemples
Formulaire de login (ex3_1)
Avec mot de passe en clair (ex3_2)
Avec mot de passe caché (ex3_3)
Formatage texte (ex3_4)
Validation au clavier (ex3_5)
Validation avec un bouton (ex3_6)