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 :
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) ...