BTS SIO
SI4 LES BASES DE LA PROGRAMMATION
Python
Lycée des Métiers Jacques Prévert
Combs la Ville
Section BTS Services Informatiques aux Organisations
1
L’objectif de l’activité est de créer une application qui va se connecter à une base de données contenant
des relevés météorologiques au format SQL grâce au moteur SQLite.
Seuls, les utilisateurs préalablement authentifiés pourront utiliser l’application ; une boîte de dialogue
permettra de s’identifier afin d’accéder à l’application et autoriser la connexion à la base.
Lorsque la connexion est réalisée, vous pourrez choisir d’extraire certaines données et de les afficher sur
la fenêtre principale, dans un tableau.
Remarque :
La bibliothèque standard de Python inclut un moteur de base de données relationnelles performant
nommé SQLite.
SQLite est le plus utilisé au monde. Il est notamment utilisé dans de nombreux logiciels grand public
comme FireFox, Skype, Google Gears, dans certains produits d’Apple, d’Adobe et de McAfee et dans des
bibliothèques standard de nombreux langages comme PHP ou Python. Il est également très populaire sur
les systèmes embarqués, notamment sur la plupart des smartphones modernes. Il s’agit d’un produit
entièrement gratuit et libre de droits. (Source : apprendre à programmer avec Python3 de Gérard
Swinnen).
SQLite mémorise toutes les tables d’une base de données dans un seul fichier multi-plate-forme. Le fichier
que vous aurez à utiliser dans ce TP est « oregon.sq3 ».
Attention Vous aurez à importer le module sqlite3 dans votre application!
a) Vous pourrez mettre votre fichier « oregon.sq3 » vous voulez sur le PC à condition de le
spécifier dans le programme:
Exemple : fichier = ‘’C:/python33/oregon.sq3’’
b) Il faut créer ensuite un objet-connexion à l’aide de la fonction connect() qui assurera l’interface
entre le programme et la base de données.
Exemple : connex = sqlite3.connect(fichier)
c) On utilise ensuite un objet-curseur , tampon intermédiaire destiné à mémoriser temporairement les
données en cours de traitement et les opérations effectuées avant le transfert définitif.
Exemple : cur = connex.cursor()
d) Le transfert dans la base s’effectue par : connex.commit()
BTS SIO
SI4 LES BASES DE LA PROGRAMMATION
Python
Lycée des Métiers Jacques Prévert
Combs la Ville
Section BTS Services Informatiques aux Organisations
2
Voici un exemple d’interface simple que vous pourrez arranger et améliorer par la suite.
Il s’agit d’un MainWindow avec menu :
- Créer un répertoire dans Python33 qui s’appelle « AppliMeteoSql ».
- Vous enregistrerez les fichiers de l’application à l‘intérieur.
- Ouvrir QtDesigner.
- Dans la fenêtre de dialogue, choisir MainWindow et cliquer sur créer. On obtient
l’interface Qt avec une fenêtre vide.
- Enregistrer le projet dans le répertoire créé précédemment sous le nom
« FenetrePrincipale.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 « Application Météo ». Faire
« Entrer ».
BTS SIO
SI4 LES BASES DE LA PROGRAMMATION
Python
Lycée des Métiers Jacques Prévert
Combs la Ville
Section BTS Services Informatiques aux Organisations
3
- L’étape suivante consiste à placer des widgets de sorte que l’on se retrouve avec cette
fenêtre :
Ajout des colonnes et noms :
- Clic droit sur la fenêtre Table Widget et « Editer les éléments ».
Largeur des colonnes:
Dans l’éditeur de propriétés :
- Onglet « Header », propriété « horizontalHeaderDefaultSectionSize » à diminuer.
Ajout des lignes:
Dans l’éditeur de propriétés :
- onglet « QTableWidget » et propriété rowCount à 50.
Ajout du menu déroulant (en haut à gauche) :
- Double-cliquer sur le nom et noter « identification », puis sous-menu « Connexion Base ».
Modification des noms de widgets :
- Chaque widget doit avoir son propre nom pour mieux les utiliser dans votre programme
- Procéder à ces modifications.
- Enregistrer votre travail et fermer QtDesigner.
N’oubliez pas d’éditer les « Combo Box » (mois, année, jour)
Group Box
Label
Combo Box
Table Widget
BTS SIO
SI4 LES BASES DE LA PROGRAMMATION
Python
Lycée des Métiers Jacques Prévert
Combs la Ville
Section BTS Services Informatiques aux Organisations
4
- Ce fichier doit maintenant être « converti » en langage Python. Nous allons créer un
fichier nommé « ui_FenetrePrincipale.py » de la manière suivante :
- Ouvrir la fenêtre de commande DOS (cmd).
- Vérifiez avec la commande « DIR » que votre fichier « FenetrePrincipale.ui » s’ y trouve.
Puis entrez la commande suivante : pyuic5 o ui_FenetrePrincipale.py x
FenetrePrincipale.ui
Faire « entrer » ; il ne doit pas y avoir de message particulier. Fermer la fenêtre.
- 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 « FenetrePrincipaleMain.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
from ui_FenetrePrincipale import *
# classe principale:
class myApp(QMainWindow, Ui_FenetrePrincipale):
def __init__(self, parent=None):
QMainWindow.__init__(self)
self.setupUi(parent)
# fonction principale exécutant l'application Qt
def main(args):
a=QApplication(args) # crée l'objet application
f=QMainWindow()
c=myApp(f) # appelle la classe contenant le code de l'application
f.show() # affiche la fenêtre QMainWindow
Mettre le nom donné
dans Qt designer
Importer la classe
graphique
BTS SIO
SI4 LES BASES DE LA PROGRAMMATION
Python
Lycée des Métiers Jacques Prévert
Combs la Ville
Section BTS Services Informatiques aux Organisations
5
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
- Lancer l’exécution de ce programme (F5) et vérifier que l’interface apparaît sans erreur.
Fermer le programme.
La 2ème partie du travail va consister à compléter le programme principal pour se connecter à la
base et afficher les données dans le tableau selon votre sélection.
Pour cela, je vous propose de créer 2 méthodes :
- executerRequete(self) qui sera appelée lorsque les combo Box de choix seront utilisés.
- ecrireTable(self,don) qui sera appelée par la précédente méthode. On peut s’en passer mais
cela permet de manipuler les méthodes.
L’instruction qui permet de réagir à une action d’un combo Box est de la forme suivante :
self.comboBox.currentIndexChanged.connect(self.executerRequete)
L’instruction qui permet de lire le contenu d’un Combo Box (un item) est de la forme suivante:
self.comboBox.currentText()
L’instruction qui permet d’effacer le contenu d’une table Widget est de la forme :
self.tableWidget.clearContents()
« currentIndexChanged » est
appelé le signal et la
méthode
« self.executerRequete() »
est appelé le slot
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !