2. Modèle
Pour rentrer dans le canevas vue-liste de PyQt, il faut à présent définir notre liste de
livres selon un modèle tabulaire, adressable cellule par cellule : ceci veut dire qu'on
doit être capable de répondre aux requêtes de la vue demandant, pour une ligne x
donnée et une colonne y donnée, l'attribut d'indice y du livre d'indice x. Pour cela, on
va définir une classe ModeleTableBiblio qui hérite de QAbstractTableModel ; cette
classe maintient un attribut livres avec la liste décrite plus haut.
Le contrat à respecter quand on hérite de QAbstractTableModel consiste à implémenter
les méthodes suivantes :
headerData : titres des colonnes ;
columnCount : nombre de colonnes ;
rowCount : nombre de lignes ;
data : l'attribut d'indice y du livre d'indice x.
Avec ces éléments en main, nous sommes prêts à écrire la classe ModeleTableBiblio, à
placer dans un nouveau fichier modele_biblio.py :
# -*- coding: utf-8 -*# modele_biblio.py
# version de base: liste fixe de livres
from PyQt5.QtCore import Qt, QAbstractTableModel, QModelIndex,
QVariant
from collections import namedtuple
Livre = namedtuple('Livre', ('titre', 'auteur', 'editeur', 'genre',
'annee', 'resume', 'prix') )
class ModeleTableBiblio(QAbstractTableModel):
def __init__(self,livres):
super(ModeleTableBiblio,self).__init__()
self.titresColonnes = ("Titre", "Auteur", "Éditeur")
self.livres = livres def headerData(self,section,orientation,role): if role ==
Qt.DisplayRole and orientation == Qt.Horizontal: return self.titresColonnes[section]
113
Précédent

- 114/494

Suivant