SI4 – LES BASES DE LA PROGRAMMATION Python - Sn

publicité
BTS SIO
SI4 – LES BASES DE LA PROGRAMMATION
Python
L’objectif de l’activité est de créer une application de création d’identifiants de connexion, en vous
basant sur le programme procédural déjà réalisé, mais cette fois, avec une interface graphique
(IHM).
Voici un exemple d’interface simple que vous pourrez arranger et améliorer par la suite.
Il s’agit d’un Widget Form sans menu :
Le 1er travail va consister à créer cette interface sans s’occuper du programme Python.
Ceci se fera à l’aide de Qt Designer . Il suffit de suivre la procédure décrite page suivante.
Télécharger PyQt5 depuis le serveur FTP et installez-le suivant les caractéristiques de votre PC :
PyQt5-5.1.1-gpl-Py3.3-Qt5.1.1-x32.exe
PyQt5-5.1.1-gpl-Py3.3-Qt5.1.1-x64.exe
Créer un répertoire dans Python33 dans lequel vous placerez tous les éléments du programme.
On l’appellera « AppliCreationComptes ».
Ouvrir Qt Designer et laissez-vous guider.
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
1
BTS SIO
SI4 – LES BASES DE LA PROGRAMMATION
Python
-
Créer un répertoire dans Python33 qui s’appelle « AppliCreationComptes ».
Vous enregistrerez les fichiers de l’application à l‘intérieur.
Ouvrir QtDesigner.
Dans la fenêtre de dialogue, choisir Widget et cliquer sur créer. On obtient l’interface Qt
avec un widget Form vide.
-
Enregistrer le projet dans le répertoire créé précédemment sous le nom
« AppliCreationComptes.ui ».
-
Modifier le titre de la fenêtre dans l’éditeur de propriétés sur la droite et trouvez la
propriété « WindowTitle » de la classe Qwidget. Mettre « Création de comptes ». Faire
« Entrer ».
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
2
BTS SIO
-
SI4 – LES BASES DE LA PROGRAMMATION
Python
L’étape suivante consiste à placer des widgets de sorte que l’on se retrouve avec ce
« mini widget » Form :
Label
Combo Box
Group Box
Line Edit
Push Button
-
On donnera des noms aux widgets Line Edit, en relation avec le contenu. Exemple : on
pourra nommer « nom », le widget Line Edit contenant le nom de l’utilisateur. Cela sera
plus facile pour se repérer dans le programme par la suite.
-
Pour le combo Box , il faut ajouter une liste de noms pour séparer les comptes profs et
élèves  clic droit sur le widget, puis  « Editer les éléments ».
-
Pour le push Button, double-cliquer pour modifier le texte. Idem pour les group Box.
-
Enregistrer votre travail et fermer QtDesigner.
-
Ce fichier doit maintenant être « converti » en langage Python. Nous allons créer un
fichier nommé « ui_AppliCreationComptes.py » de la manière suivante :
-
Ouvrir la fenêtre de commande DOS (cmd).
-
Vérifiez avec la commande « DIR » que votre fichier « AppliCreationComptes.ui » s’ y
trouve. Puis entrez la commande suivante : pyuic5 –o ui_AppliCreationComptes.py –x
AppliCreationComptes.ui
Faire « entrer » ; il ne doit pas y avoir de message particulier. Fermer la fenêtre.
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
3
BTS SIO
-
SI4 – LES BASES DE LA PROGRAMMATION
Python
Ouvrir l’IDLE de Python3 (Démarrer« ui_AppliCreationComptes.py ».
programmes)
et
ouvrir
le
fichier
Faire F5 pour exécuter le programme. La fenêtre précédente apparaît.
-
L’étape suivante va consister à créer le programme principal indépendant de la partie
programme de l’interface graphique (ceci est alors plus simple lorsqu’il faut changer des
éléments de cette interface).
Pour cela, créer un nouveau fichier « CreationComptesMain.py » puis insérer les lignes
suivantes nécessaires pour afficher la fenêtre graphique.
# --- importation des modules utiles --from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import os,sys
Mettre le nom donné
dans Qt designer
# classe principale:
class myApp(QWidget, Ui_Form): # la classe reçoit le Qwidget principal
# Note : ici self représente la classe
def __init__(self, parent=None):
QWidget.__init__(self) # initialise le Qwidget principal
self.setupUi(parent) # Obligatoire
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
4
BTS SIO
SI4 – LES BASES DE LA PROGRAMMATION
Python
# fonction principale exécutant l'application Qt
def main(args):
a=QApplication(args) # crée l'objet application
f=QWidget() # crée le QWidget racine
c=myApp(f) # appelle la classe contenant le code de l'application
f.show() # affiche la fenêtre QWidget
r=a.exec_() # lance l'exécution de l'application
return r
# pour rendre le fichier *.py exécutable
if __name__=="__main__": # pour rendre le code exécutable
main(sys.argv) # appelle la fonction main
-
Avec ce programme, vous ne pouvez pas encore ouvrir l’interface graphique ; vous devez
importer le programme précédent « ui_AppliCreationComptes.py ».
Ajouter l’instruction : from ui_AppliCreationComptes.py import *
dans la partie
importation des modules.
-
Lancer l’exécution de ce programme (F5) et vérifier que l’interface apparaît sans erreur.
Les actions sont pour l’instant inopérantes ; normal car le programme n’est pas terminé.
Fermer le programme.
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
5
SI4 – LES BASES DE LA PROGRAMMATION
Python
BTS SIO
La 2ème partie du travail va consister à utiliser votre programme de création de comptes et de l’adapter à
cette nouvelle application graphique.
Pour cela, vous allez créer des fonctions que l’on appelle des méthodes en programmation orientée objet
(POO).
Je vous propose 3 méthodes dont les noms sont souvent des verbes à l’infinitif:
-
traiter(self)
-
creerLoginMdp(self)
-
ecrireCsv(self,nomFichier,liste)  2paramètres : le nom du fichier csv et la variable liste
correspondant à une ligne d’enregistrement (nom, prénom, classe, login et mot de passe).
La méthode « traiter () » est appelée sur un événement qui est l’appui sur le push Button.
Cela s’écrit :
self.pushButton.clicked.connect(self.traiter)
Dans la méthode « traiter() », il faudra :
-
appeler la méthode creerLoginMdp() et récupérer les login et mot de passe.
-
afficher les login et mot de passe dans les Line Text prévus avec l’instruction suivante :
exemple :
-
self.login.setText(variable)
variable étant le login créé.
Récupérer le contenu du combo Box (professeurs ou élèves) avec l’instruction suivante :
exemple :
self.comboBox.currentText()
-
appeler la méthode ecrireCsv(nomFichier,liste) pour écrire l’enregistrement dans le fichier csv,
fichier qui sera nommé « compteProfs » ou « compteEleves » selon la sélection au niveau du
combo Box.
-
Toutes les variables de classe (utilisées par les méthodes) seront déclarées dans la partie
def __init__(self) en utilisant la notation self.nomVariable = .....
def __init__(self) est appelé le constructeur et les variables de la classe, les attributs.
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
6
Téléchargement