1 - A propos de la classe QPixmap PyQt5
Un QPixmap est l'un des widgets utilisés pour gérer et manipuler des images. Il est optimisé pour afficher des images à l'écran. Dans notre exemple de code, nous utiliserons le QPixmap pour afficher une image sur la fenêtre. Un objet QPixmap peut aussi être chargé dans un autre widget, généralement une étiquette ou un bouton.
L'API Qt a une autre classe similaire QImage, qui est optimisée pour les E/S et autres manipulations de pixels. Pixmap, en revanche, est optimisé pour l'affichage à l'écran.
2 - Création et insertion d'image avec QPixmap PyQt5
Pour insérer une image sur une fenêtre PyQt5 on doit:
- importer la classe QPixmap depuis PyQt5.QtGui
- créer un objet d'instance de la classe QPixmap
- associer l'objet d'instance QPixmap à un QLabel via la méthode setPixmap()
Exemple
Créons maintenant un dossier nommé 'images/' et mettons au sein duquel une image 'laptop.png' et créons ensuite un fichier python pour visualiser l'image:
show-image.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from PyQt5.QtWidgets import QApplication, QWidget, QLabel from PyQt5.QtGui import QPixmap import sys app = QApplication(sys.argv) root = QWidget() root.setGeometry(100 , 100 , 500 , 300) # create a QPixmap object qpixmap = QPixmap("./images/laptop.png") # creat a QLabel for image lbl_img = QLabel(root) lbl_img.setGeometry(50 , 20 , 300 , 300) lbl_img.setPixmap(qpixmap) root.show() sys.exit(app.exec_()) |
Remarque
On peut aussi redimmensionner l'image via la méthode resize appliquée au QLabel contenant l'image:
1 2 3 |
# resizing the image lbl_img.setScaledContents(True) lbl_img.resize(75 , 75) |
3 - QPixmap selon l'approche objet
En se basant sur la syntaxe de création et d'insertion d'image via la classe QPixmap, on peut la recoder en totalité dans une seule classe Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
from PyQt5.QtWidgets import QApplication, QWidget, QLabel from PyQt5.QtGui import QPixmap import sys class MyWindow(QWidget): def __init__(self, win): super().__init__() self.win = win def build(self): self.win.setWindowTitle("Example of QPixmap") self.win.setGeometry(100 , 100 , 500 , 300) # create a QPixmap object self.img = QPixmap("./images/laptop.png") # create a QLabel for image self.lbl_img = QLabel(self.win) self.lbl_img.setScaledContents(True) # set the QPximap object to the label image self.lbl_img.setPixmap(self.img) self.lbl_img.resize(75 , 75) if __name__ == '__main__': app = QApplication(sys.argv) root = QWidget() mywin = MyWindow(root) mywin.build() root.show() sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA