How do I display an Image in PyQt5/PySide2?

The QPixmap class is used to display the image inside a PyQt/Pyside window, either as a QPainterDevice object or loaded into a control, usually a label or button.

QPixmap can read image file types such as BMP, GIF, JPG, etc. If you want to display animated GIFs, you can use QMovie. PyQt can also display videos.

QPixmap is one of the widgets used to process images. It is optimized for displaying images on the screen. In our code example, we will use QPixmap to display the image on the window.

If you are new to PyQt, I suggest this course/book.

PyQt show image

The code below loads an image using a QPixmap. It attaches the QPixmap to a QLabel. The label is added to an QHBoxLayout and the QHboxLayout to the window.

<span>from</span> <span>PyQt5.Qt</span> <span>import</span> <span>(</span><span>QWidget</span><span>,</span> <span>QHBoxLayout</span><span>,</span> <span>QLabel</span><span>,</span> <span>QApplication</span><span>)</span>
<span>from</span> <span>PyQt5.QtGui</span> <span>import</span> <span>QPixmap</span>
<span>import</span> <span>sys</span>
<span>class</span> <span>Example</span><span>(</span><span>QWidget</span><span>):</span>
<span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>
<span>super</span><span>().</span><span>__init__</span><span>()</span>
<span>self</span><span>.</span><span>initUI</span><span>()</span>
<span>def</span> <span>initUI</span><span>(</span><span>self</span><span>):</span>
<span>hbox</span> <span>=</span> <span>QHBoxLayout</span><span>(</span><span>self</span><span>)</span>
<span>pixmap</span> <span>=</span> <span>QPixmap</span><span>(</span><span>"</span><span>cat.jpg</span><span>"</span><span>)</span>
<span>lbl</span> <span>=</span> <span>QLabel</span><span>(</span><span>self</span><span>)</span>
<span>lbl</span><span>.</span><span>setPixmap</span><span>(</span><span>pixmap</span><span>)</span>
<span>hbox</span><span>.</span><span>addWidget</span><span>(</span><span>lbl</span><span>)</span>
<span>self</span><span>.</span><span>setLayout</span><span>(</span><span>hbox</span><span>)</span>
<span>self</span><span>.</span><span>move</span><span>(</span><span>300</span><span>,</span> <span>200</span><span>)</span>
<span>self</span><span>.</span><span>setWindowTitle</span><span>(</span><span>'</span><span>Image with PyQt</span><span>'</span><span>)</span>
<span>self</span><span>.</span><span>show</span><span>()</span>
<span>if</span> <span>__name__</span> <span>==</span> <span>'</span><span>__main__</span><span>'</span><span>:</span>
<span>app</span> <span>=</span> <span>QApplication</span><span>(</span><span>sys</span><span>.</span><span>argv</span><span>)</span>
<span>ex</span> <span>=</span> <span>Example</span><span>()</span>
<span>sys</span><span>.</span><span>exit</span><span>(</span><span>app</span><span>.</span><span>exec_</span><span>())</span>
<span>from</span> <span>PyQt5.Qt</span> <span>import</span> <span>(</span><span>QWidget</span><span>,</span> <span>QHBoxLayout</span><span>,</span> <span>QLabel</span><span>,</span> <span>QApplication</span><span>)</span>                                                                          
<span>from</span> <span>PyQt5.QtGui</span> <span>import</span> <span>QPixmap</span>                                                                                                            
<span>import</span> <span>sys</span>                                                                                                                                 

<span>class</span> <span>Example</span><span>(</span><span>QWidget</span><span>):</span>                                                                                                                    
    <span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>                                                                                                                    
        <span>super</span><span>().</span><span>__init__</span><span>()</span>                                                                                                                 
        <span>self</span><span>.</span><span>initUI</span><span>()</span>                                                                                                                      

    <span>def</span> <span>initUI</span><span>(</span><span>self</span><span>):</span>                                                                                                                      
        <span>hbox</span> <span>=</span> <span>QHBoxLayout</span><span>(</span><span>self</span><span>)</span>                                                                                                           
        <span>pixmap</span> <span>=</span> <span>QPixmap</span><span>(</span><span>"</span><span>cat.jpg</span><span>"</span><span>)</span>                                                                                                        

        <span>lbl</span> <span>=</span> <span>QLabel</span><span>(</span><span>self</span><span>)</span>                                                                                                                 
        <span>lbl</span><span>.</span><span>setPixmap</span><span>(</span><span>pixmap</span><span>)</span>                                                                                                              

        <span>hbox</span><span>.</span><span>addWidget</span><span>(</span><span>lbl</span><span>)</span>                                                                                                                
        <span>self</span><span>.</span><span>setLayout</span><span>(</span><span>hbox</span><span>)</span>                                                                                                               

        <span>self</span><span>.</span><span>move</span><span>(</span><span>300</span><span>,</span> <span>200</span><span>)</span>                                                                                                                
        <span>self</span><span>.</span><span>setWindowTitle</span><span>(</span><span>'</span><span>Image with PyQt</span><span>'</span><span>)</span>                                                                                             
        <span>self</span><span>.</span><span>show</span><span>()</span>                                                                                                                        

<span>if</span> <span>__name__</span> <span>==</span> <span>'</span><span>__main__</span><span>'</span><span>:</span>                                                                                                                 

    <span>app</span> <span>=</span> <span>QApplication</span><span>(</span><span>sys</span><span>.</span><span>argv</span><span>)</span>                                                                                                           
    <span>ex</span> <span>=</span> <span>Example</span><span>()</span>                                                                                                                         
    <span>sys</span><span>.</span><span>exit</span><span>(</span><span>app</span><span>.</span><span>exec_</span><span>())</span>      
from PyQt5.Qt import (QWidget, QHBoxLayout, QLabel, QApplication) from PyQt5.QtGui import QPixmap import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout(self) pixmap = QPixmap("cat.jpg") lbl = QLabel(self) lbl.setPixmap(pixmap) hbox.addWidget(lbl) self.setLayout(hbox) self.move(300, 200) self.setWindowTitle('Image with PyQt') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())

Enter fullscreen mode Exit fullscreen mode

In our example, we display the image on the window.

<span>pixmap</span> <span>=</span> <span>QPixmap</span><span>(</span><span>"</span><span>cat.png</span><span>"</span><span>)</span>
<span>pixmap</span> <span>=</span> <span>QPixmap</span><span>(</span><span>"</span><span>cat.png</span><span>"</span><span>)</span>
pixmap = QPixmap("cat.png")

Enter fullscreen mode Exit fullscreen mode

We create a QPixmap object. It takes the name of the file as an argument.

<span>lbl</span> <span>=</span> <span>QLabel</span><span>(</span><span>self</span><span>)</span>
<span>lbl</span><span>.</span><span>setPixmap</span><span>(</span><span>pixmap</span><span>)</span>
<span>lbl</span> <span>=</span> <span>QLabel</span><span>(</span><span>self</span><span>)</span>
<span>lbl</span><span>.</span><span>setPixmap</span><span>(</span><span>pixmap</span><span>)</span>
lbl = QLabel(self) lbl.setPixmap(pixmap)

Enter fullscreen mode Exit fullscreen mode

We put the pixmap into the QLabel widget.
Alternatively you can use designer.

PySide2 show image

The PySide2 version is similar. Both the PyQt and PySide toolkits are actively maintained, and by now more or less equal in features and quality. There are only few, rather unimportant differences.

<span>import</span> <span>sys</span>
<span>from</span> <span>PySide2.QtGui</span> <span>import</span> <span>QPixmap</span>
<span>from</span> <span>PySide2.QtWidgets</span> <span>import</span> <span>QMainWindow</span><span>,</span> <span>QApplication</span><span>,</span> <span>QLabel</span>
<span>class</span> <span>MainWindow</span><span>(</span><span>QMainWindow</span><span>):</span>
<span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>
<span>super</span><span>(</span><span>MainWindow</span><span>,</span> <span>self</span><span>).</span><span>__init__</span><span>()</span>
<span>self</span><span>.</span><span>title</span> <span>=</span> <span>"</span><span>Load image in PySide2</span><span>"</span>
<span>self</span><span>.</span><span>setWindowTitle</span><span>(</span><span>self</span><span>.</span><span>title</span><span>)</span>
<span>label</span> <span>=</span> <span>QLabel</span><span>(</span><span>self</span><span>)</span>
<span>pixmap</span> <span>=</span> <span>QPixmap</span><span>(</span><span>'</span><span>cat.jpg</span><span>'</span><span>)</span>
<span>label</span><span>.</span><span>setPixmap</span><span>(</span><span>pixmap</span><span>)</span>
<span>self</span><span>.</span><span>setCentralWidget</span><span>(</span><span>label</span><span>)</span>
<span>self</span><span>.</span><span>resize</span><span>(</span><span>pixmap</span><span>.</span><span>width</span><span>(),</span> <span>pixmap</span><span>.</span><span>height</span><span>())</span>
<span>app</span> <span>=</span> <span>QApplication</span><span>(</span><span>sys</span><span>.</span><span>argv</span><span>)</span>
<span>w</span> <span>=</span> <span>MainWindow</span><span>()</span>
<span>w</span><span>.</span><span>show</span><span>()</span>
<span>sys</span><span>.</span><span>exit</span><span>(</span><span>app</span><span>.</span><span>exec_</span><span>())</span>
<span>import</span> <span>sys</span>                                                                                                                                 
<span>from</span> <span>PySide2.QtGui</span> <span>import</span> <span>QPixmap</span>                                                                                                          
<span>from</span> <span>PySide2.QtWidgets</span> <span>import</span> <span>QMainWindow</span><span>,</span> <span>QApplication</span><span>,</span> <span>QLabel</span>                                                                            

<span>class</span> <span>MainWindow</span><span>(</span><span>QMainWindow</span><span>):</span>                                                                                                             

    <span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>                                                                                                                    
        <span>super</span><span>(</span><span>MainWindow</span><span>,</span> <span>self</span><span>).</span><span>__init__</span><span>()</span>                                                                                                 
        <span>self</span><span>.</span><span>title</span> <span>=</span> <span>"</span><span>Load image in PySide2</span><span>"</span>                                                                                               
        <span>self</span><span>.</span><span>setWindowTitle</span><span>(</span><span>self</span><span>.</span><span>title</span><span>)</span>                                                                                                    

        <span>label</span> <span>=</span> <span>QLabel</span><span>(</span><span>self</span><span>)</span>                                                                                                               
        <span>pixmap</span> <span>=</span> <span>QPixmap</span><span>(</span><span>'</span><span>cat.jpg</span><span>'</span><span>)</span>                                                                                                        
        <span>label</span><span>.</span><span>setPixmap</span><span>(</span><span>pixmap</span><span>)</span>                                                                                                            
        <span>self</span><span>.</span><span>setCentralWidget</span><span>(</span><span>label</span><span>)</span>                                                                                                       
        <span>self</span><span>.</span><span>resize</span><span>(</span><span>pixmap</span><span>.</span><span>width</span><span>(),</span> <span>pixmap</span><span>.</span><span>height</span><span>())</span>                                                                                       

<span>app</span> <span>=</span> <span>QApplication</span><span>(</span><span>sys</span><span>.</span><span>argv</span><span>)</span>                                                                                                               
<span>w</span> <span>=</span> <span>MainWindow</span><span>()</span>                                                                                                                           
<span>w</span><span>.</span><span>show</span><span>()</span>                                                                                                                                   
<span>sys</span><span>.</span><span>exit</span><span>(</span><span>app</span><span>.</span><span>exec_</span><span>())</span>  
import sys from PySide2.QtGui import QPixmap from PySide2.QtWidgets import QMainWindow, QApplication, QLabel class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.title = "Load image in PySide2" self.setWindowTitle(self.title) label = QLabel(self) pixmap = QPixmap('cat.jpg') label.setPixmap(pixmap) self.setCentralWidget(label) self.resize(pixmap.width(), pixmap.height()) app = QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec_())

Enter fullscreen mode Exit fullscreen mode

Reference

原文链接:How do I display an Image in PyQt5/PySide2?

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
Like a child, always believe in hope, I believe the dream.
像孩子一样,永远相信希望,相信梦想
评论 抢沙发

请登录后发表评论

    暂无评论内容