欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt5入門之基于QListWidget版本實現(xiàn)圖片縮略圖列表功能

 更新時間:2021年09月09日 08:45:05   作者:蝦米小餛飩  
這篇文章主要介紹了PyQt5入門之基于QListWidget版本實現(xiàn)圖片縮略圖列表功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

需求描述

最近在寫一個圖像標注小工具,其中需要用到一個縮略圖列表,來查看文件夾內的圖片文件。

這里整理一個基于QListWidget實現(xiàn)的版本,簡單可用。

示例效果

在這里插入圖片描述

代碼示例

QListWidget官方文檔:[link]

其中,需要用到的QListWidget信號:

itemSelectionChanged:所選項發(fā)生變化時發(fā)送。

先定義縮略圖列表部分,繼承自QListWidget。每個QListWidgetItem可以設置QIcon圖片和文本。

import os
from qtpy.QtCore import QSize
from qtpy.QtGui import QIcon,QPixmap
from PyQt5.QtWidgets import QListWidget,QListWidgetItem,QListView,QWidget,QApplication,QHBoxLayout,QLabel

class ImageListWidget(QListWidget):
    def __init__(self):
        super(ImageListWidget, self).__init__()
        self.setFlow(QListView.Flow(1))#0: left to right,1: top to bottom
        self.setIconSize(QSize(150,100))

    def add_image_items(self,image_paths=[]):
        for img_path in image_paths:
            if os.path.isfile(img_path):
                img_name = os.path.basename(img_path)
                item = QListWidgetItem(QIcon(img_path),img_name)
                # item.setText(img_name)
                # item.setIcon(QIcon(img_path))
                self.addItem(item)

再來簡單布局下窗體控件:

左邊區(qū)域用QLabel加載圖像,右邊區(qū)域是圖片縮略圖列表,點擊縮略圖,可以在左邊查看大圖。

class ImageViewerWidget(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        # 顯示控件
        self.list_widget = ImageListWidget()
        self.list_widget.setMinimumWidth(200)
        self.show_label = QLabel(self)
        self.show_label.setFixedSize(600,400)
        self.image_paths = []
        self.currentImgIdx = 0
        self.currentImg = None

        # 水平布局
        self.layout = QHBoxLayout(self)
        self.layout.addWidget(self.show_label)
        self.layout.addWidget(self.list_widget)

        # 信號與連接
        self.list_widget.itemSelectionChanged.connect(self.loadImage)

    def load_from_paths(self,img_paths=[]):
        self.image_paths = img_paths
        self.list_widget.add_image_items(img_paths)

    def loadImage(self):
        self.currentImgIdx = self.list_widget.currentIndex().row()
        if self.currentImgIdx in range(len(self.image_paths)):
            self.currentImg = QPixmap(self.image_paths[self.currentImgIdx]).scaledToHeight(400)
            self.show_label.setPixmap(self.currentImg)

加載一些圖片路徑,并運行窗口:

if __name__=="__main__":
    import sys
    app = QApplication(sys.argv)

    # 圖像路徑
    img_dir = r"E:\Pic"
    filenames = os.listdir(img_dir)
    img_paths=[]
    for file in filenames:
        if file[-4:]==".png" or file[-4:]==".jpg":
            img_paths.append(os.path.join(img_dir,file))

    # 顯示控件
    main_widget = ImageViewerWidget()
    main_widget.load_from_paths(img_paths)
    main_widget.setWindowTitle("ImageViewer")
    main_widget.show()

    # 應用程序運行
    sys.exit(app.exec_())

小結

  • 上面代碼只是一個實現(xiàn)思路,實際應用中最好另開一個線程加載圖片,并且隨著滾動條下拉,再不斷加載緩存。
  • QListWidget可以實現(xiàn)簡單的圖標+文字列表,如果列表項中涉及自定義控件和其他操作邏輯,建議采用QListView和Model實現(xiàn)。

到此這篇關于PyQt5入門之QListWidget實現(xiàn)圖片縮略圖列表功能的文章就介紹到這了,更多相關PyQt5 QListWidget圖片縮略圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用python代碼進行身份證號校驗的實現(xiàn)示例

    使用python代碼進行身份證號校驗的實現(xiàn)示例

    這篇文章主要介紹了使用python代碼進行身份證號校驗的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Python 初始化多維數(shù)組代碼

    Python 初始化多維數(shù)組代碼

    python多維數(shù)組方法示例代碼
    2008-09-09
  • PyQt5基本控件使用詳解:單選按鈕、復選框、下拉框

    PyQt5基本控件使用詳解:單選按鈕、復選框、下拉框

    這篇文章主要介紹了PyQt5基本控件使用:單選按鈕、復選框、下拉框,本文中的內容和實例也基本回答了開篇提到的問題。需要的朋友可以參考下
    2019-08-08
  • Python面向對象編程基礎解析(一)

    Python面向對象編程基礎解析(一)

    這篇文章主要介紹了Python面向對象編程基礎解析的相關內容,如果您想對Python編程的基礎部分有所了解,這篇文章是值得一看的,需要的朋友可以參考下。
    2017-10-10
  • pytorch多GPU并行運算的實現(xiàn)

    pytorch多GPU并行運算的實現(xiàn)

    這篇文章主要介紹了pytorch多GPU并行運算的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • python3.0 模擬用戶登錄,三次錯誤鎖定的實例

    python3.0 模擬用戶登錄,三次錯誤鎖定的實例

    下面小編就為大家?guī)硪黄猵ython3.0 模擬用戶登錄,三次錯誤鎖定的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python 爬蟲之超鏈接 url中含有中文出錯及解決辦法

    Python 爬蟲之超鏈接 url中含有中文出錯及解決辦法

    這篇文章主要介紹了Python 爬蟲之超鏈接 url中含有中文出錯及解決辦法的相關資料,出現(xiàn)UnicodeEncodeError: 'ascii' codec can't encode characters,的錯誤解決辦法,需要的朋友可以參考下
    2017-08-08
  • 關于Python的異常捕獲和處理

    關于Python的異常捕獲和處理

    程序在運行過程當中,不可避免的會出現(xiàn)一些錯誤,比如:使用了沒有賦值過的變量,使用了不存在的索引,一個數(shù)字除以0,這些錯誤在程序中,我們稱其為異常,那么如何處理這些異常呢,今天我們就來看一看
    2023-04-04
  • 對pandas通過索引提取dataframe的行方法詳解

    對pandas通過索引提取dataframe的行方法詳解

    今天小編就為大家分享一篇對pandas通過索引提取dataframe的行方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python Opencv中基礎的知識點

    Python Opencv中基礎的知識點

    這篇文章主要介紹了Python Opencv中基礎的知識點,主要包括創(chuàng)建窗口、保存圖片、采集視頻、鼠標控制的代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論