python GUI庫圖形界面開發(fā)之PyQt5圖片顯示控件QPixmap詳細使用方法與實例
PyQt5圖片顯示控件QPixmap介紹
QPixmap類用于繪圖設(shè)備的圖像顯示,它可以作為一個QPainterDevice對象,也可以加載到一個控件中,通常是標簽或者按鈕,用于在標簽或按鈕上顯示圖像
QPixmap可以讀取的圖像文件類型有BMP,GIF,JPG等
QPixmap類中常用的方法
| 方法 | 描述 |
|---|---|
| copy() | 從QRect對象復制到QPixmap對象 |
| fromImage() | 將QImage對象轉(zhuǎn)換為QPixmap對象 |
| grabWidget() | 從給定的一個窗口小控件創(chuàng)建一個像素圖 |
| grabWindow() | 在窗口創(chuàng)建數(shù)據(jù)的像素圖 |
| load() | 加載圖像文件作為QPixmap對象 |
| save() | 將QPixmap對象保存為文件 |
| toImage() | 將QPixmap對象轉(zhuǎn)換為QImage對象 |
QPixmap的使用實例
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class QpixmapDemo(QWidget):
def __init__(self,parent=None):
super(QpixmapDemo, self).__init__(parent)
self.setWindowTitle('QPixmap例子')
layout=QVBoxLayout()
lab1=QLabel()
lab1.setPixmap(QPixmap('\images\python.jpg'))
layout.addWidget(lab1)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo =QpixmapDemo()
demo.show()
sys.exit(app.exec_())
效果如圖

代碼分析
在這個例子中,使用setPixmap()將圖像顯示在QLabel上
lab1=QLabel()
lab1.setPixmap(QPixmap('\images\python.jpg'))
QImage與QPixmap區(qū)別
不同平臺,依賴、存儲不同
QPixmap依賴于硬件,QImage不依賴于硬件。
在X11, Mac 以及 Symbian平臺上。
QImage: 因為它是存儲在客戶端,往QImage上繪圖比較快,但顯示它則比較慢。QPixmap: 具體實現(xiàn)是依賴于系統(tǒng)的,它是存儲在服務(wù)器端,往QPixmap上繪圖比較慢,但顯示它則比較快。但在Windows平臺上則是是一樣的,因為它們都存儲在客戶端,并不使用任何的GDI資源,可能看起來并沒有多大區(qū)別。
目前的Qt會把QPixmap都存儲在graphics memory中,這明顯是依賴硬件的。因此我們對QPixmap的使用需要格外注意。
那么Qt為什么要這么做呢?很簡單,設(shè)計之初QPixmap就是用來加速顯示的,例如我們在paint的時候用QPixmap就會比用其他類的效果好許多。
用處分工不同
QPixmap主要是用于繪圖,針對屏幕顯示而最佳化設(shè)計,QImage主要是為圖像I/O、圖片訪問和像素修改而設(shè)計的。
當圖片小的情況下,直接用QPixmap進行加載,畫圖時無所謂,當圖片大的時候如果直接用QPixmap進行加載,會占很大的內(nèi)存,一般一張幾十K的圖片,用QPixmap加載進來會放大很多倍,所以一般圖片大的情況下,用QImage進行加載,然后轉(zhuǎn)乘QPixmap用戶繪制。QPixmap繪制效果是最好的。
總結(jié):
對于顯示小圖片時,可以用QPixmap進行加載,繪畫圖片。當繪畫大圖片時候,此時最好實現(xiàn)QImage進行加載,因為QImage本身主要是為圖像I/O、圖片訪問和像素修改而設(shè)計的,它可以實現(xiàn)對圖片旋轉(zhuǎn)、縮放等。然后通過QPixmap實現(xiàn)繪圖。
本文詳細介紹了PyQt5圖片顯示控件QPixmap詳細使用方法與實例,還包括PyQt5中QImage控件與QPixmap控件的區(qū)別,更多關(guān)于這方面的知識請查看下面的相關(guān)鏈接
相關(guān)文章
Python利用ElementTree庫處理XML的完全指南
Python作為一種廣泛應(yīng)用的編程語言,提供了多種庫來支持XML處理,使得開發(fā)者能夠更加便捷和高效地處理XML數(shù)據(jù),本章將對Python中常用的XML處理庫進行概述,包括它們的特性和適用場景,為讀者選擇合適的庫提供參考,需要的朋友可以參考下2025-07-07
Python+matplotlib調(diào)用隨機函數(shù)生成變化圖形
這篇文章主要介紹了如何在Python中利用隨機函數(shù)生成變化的圖形,文中的示例代碼講解詳細,對我們學習有一定吧參考價值,需要的可以了解一下2022-04-04
Python+Pika+RabbitMQ環(huán)境部署及實現(xiàn)工作隊列的實例教程
RabbitMQ是一個消息隊列服務(wù)器,在本文中我們將學習到Python+Pika+RabbitMQ環(huán)境部署及實現(xiàn)工作隊列的實例教程,需要的朋友可以參考下2016-06-06
wxpython中自定義事件的實現(xiàn)與使用方法分析
這篇文章主要介紹了wxpython中自定義事件的實現(xiàn)與使用方法,結(jié)合實例形式詳細分析了wxpython中自定義事件的創(chuàng)建步驟與使用方法,需要的朋友可以參考下2016-07-07
Python編程使用*解包和itertools.product()求笛卡爾積的方法
這篇文章主要介紹了Python編程使用*解包和itertools.product()求笛卡爾積的方法,涉及Python列表轉(zhuǎn)換及itertools.product()求笛卡爾積相關(guān)操作技巧,需要的朋友可以參考下2017-12-12

