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