Formation PUB400 : Python, 2018 Environnement graphique tkinter

9.17 Afficher des données brutes dans un objet Text


Dans une application graphique avec tkinter, il est possible d'afficher le résultat d'une requête SQLite dans une objet de type Text.

La méthode insert() permet d'ajouter des données à la fin du texte existant.

La constante os.linesep permet de passer à la ligne suivante.

Le résultat sera une série de lignes qui affichent les données brutes de chaque enregistrement retrouvé par la requête.

Ex :

Python

#!/usr/bin/env python

 

from tkinter import *

import sqlite3

import sys

import traceback

import os

 

# fenêtre principale

fenetre = Tk()

fenetre.title('Système scolaire')

 

# libellé

libelle = Label(fenetre, text = 'Étudiants')

libelle.pack(padx = 10, pady = 10)

 

# texte

texte = Text(fenetre)

texte.pack(padx = 10, pady = 10)

 

# lecture dans la BD

try:

    connexion = None

    connexion = sqlite3.connect('file:systemescolaire.db?mode=rw', uri=True)

    curseur = connexion.cursor()

 

    requete = 'SELECT nomfamille, prenom, da FROM etudiants ORDER BY nomfamille, prenom'

    curseur.execute(requete)

    resultat = curseur.fetchall()

 

    if len(resultat):

        for enreg in resultat:

            texte.insert(END, enreg[0] + ', ' + enreg[1] + ' - ' + str(enreg[2]) + os.linesep)

    else:

        texte.insert(END, 'Il n\'y a présentement aucun étudiant dans le système.') 

 

except sqlite3.OperationalError as e:

    if not connexion:

        texte.insert(END, 'La configuration à la base de données a échoué.')

    else:

        texte.insert(END, 'Il y a une erreur dans la requête SQL.')

 

    traceback.print_exc(file=sys.stdout)

 

except Exception as e:

    texte.insert(END, 'Une erreur inattendue est survenue.')

    traceback.print_exc(file=sys.stdout)

 

finally:

    if connexion:

        connexion.close()

 

# la fenêtre s'affiche puis attend les interactions de l'usager

fenetre.mainloop()

Et voici le résultat :

Résultat à l'écran

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre