Sommaire

Manipuler les polices, l’objet QFont Polices:QFont

1. Utiliser l’objet QFont

La documentation en ligne de l’objet QFont est disponible à cette adresse : https://doc.qt.io/qt-5/qfont.html

L’objet QFont permet d’encapsuler le nom de la police choisie, sa taille, son style éventuel (gras, italique, etc.), son étirement, la dimension des espaces entre chaque caractère et bien d’autres paramètres encore. 

Pour l’utiliser, on commence par déclarer l’import adéquat.

from PyQt5.QtGui import QFont

On instancie ensuite l’objet de type QFont, par exemple selon les lignes de code ci-dessous. On déclare la police de nom Chalkduster, en taille 18 et avec une stylisation en gras. On active également la mise en italique.

maFont = QFont(’Chalkduster’, 18, QFont.Bold) 
maFont.setItalic(True)

Une fois notre police PyQt créée, on peut l’utiliser sur nos différents widgets grâce à la méthode en général disponible setFont.

Ainsi, en reprenant l’exemple précédent, on change la police du label du champ « Nom : » (lignes concernées en gras).

import sys 
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QCheckBox 
from PyQt5.QtWidgets import QFormLayout, QLabel, QLineEdit, QcomboBox 
 
from PyQt5.QtGui import QFont 
 
maFont = QFont(’Chalkduster’, 18, QFont.Bold) 
maFont.setItalic(True) 
 
class Fenetre(QWidget): 
 
    def __init__(self): 
 
        super().__init__() 
 
        self.setGeometry(100, 100, 250, 100) 
        self.setWindowTitle("Chapitre 6 - formulaire") 
        self.disposition = QFormLayout() 
 
        self.nomLabel = QLabel("Nom : ") 
        self.nom = QLineEdit() 
        self.disposition.addRow(self.nomLabel, self.nom) 
 
        self.prenomLabel = QLabel("Prénom : ") 
        self.prenom = QLineEdit() 
        self.disposition.addRow(self.prenomLabel, self.prenom) 
 
        self.loisirLabel = QLabel("Loisir préféré : ") 
        self.loisir = QComboBox() 
        self.loisir.addItems(["Pratique sportive", "Pratique artistique", 
"Programmation informatique", "Voyages"]) 
        self.disposition.addRow(self.loisirLabel, self.loisir) 
 
        self.veloLabel = QLabel("Possède un vélo ?") 
        self.velo = QCheckBox() 
        self.velo.setChecked(True) 
        self.disposition.addRow(self.veloLabel, self.velo) 
 
        self.boutonEnvoyer = QPushButton("Envoyer") 
        self.boutonAnnuler = QPushButton("Annuler") 
        self.disposition.addRow(self.boutonEnvoyer, self.boutonAnnuler) 
 
        self.setLayout(self.disposition) 
 
        self.nomLabel.setFont(maFont) 
 
 
if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    fenetre = Fenetre() 
    fenetre.show() 
    sys.exit(app.exec_())

Cet amendement du code permet cet affichage. Comme on le voit, la chaîne de caractères « Nom : » est stylisée en conséquence :

images/06EP02.png

Utilisation de QFont

Définissons une seconde police pour les autres labels de l’application. Cette fois-ci, on instancie un QFont vide et on valorise les propriétés de l’instance grâce aux accesseurs. On fait notamment en sorte que cette police soit soulignée.

maFont2 = QFont() 
maFont2.setFamily(’Futura’) 
maFont2.setPointSize(15) 
maFont2.setCapitalization(QFont.Capitalize) 
maFont2.setWeight(QFont.Medium) 
maFont2.setUnderline(True)

Le nouveau code global est le suivant (lignes concernées en gras) :

import sys 
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QCheckBox 
from PyQt5.QtWidgets import QFormLayout, QLabel, QLineEdit, QcomboBox 
 
from PyQt5.QtGui import QFont 
 
maFont = QFont(’Chalkduster’, 18, QFont.Bold) 
maFont.setItalic(True)  ...