最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

需求描述

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

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

示例效果

在這里插入圖片描述

代碼示例

QListWidget官方文檔:[link]

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

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

先定義縮略圖列表部分,繼承自QListWidget。每個QListWidgetItem可以設(shè)置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()

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

小結(jié)

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

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

相關(guān)文章

  • Python利用shutil實現(xiàn)拷貝文件功能

    Python利用shutil實現(xiàn)拷貝文件功能

    shutil?是一個?Python?內(nèi)置模塊,該模塊對文件的復(fù)制、刪除和壓縮等操作都提供了非常方便的支持。本文將利用shutil實現(xiàn)拷貝文件功能,需要的可以參考一下
    2022-07-07
  • Python初學(xué)者必備的文件讀寫指南

    Python初學(xué)者必備的文件讀寫指南

    今天給大家?guī)淼氖顷P(guān)于Python基礎(chǔ)的相關(guān)知識,文章圍繞著Python文件讀寫展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python中dict和set的用法講解

    Python中dict和set的用法講解

    今天小編就為大家分享一篇關(guān)于Python中dict和set的用法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Python項目跨域問題解決方案

    Python項目跨域問題解決方案

    這篇文章主要介紹了Python項目跨域問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 75條笑死人的知乎神回復(fù),用60行代碼就爬完了

    75條笑死人的知乎神回復(fù),用60行代碼就爬完了

    這篇文章主要介紹了python爬取知乎回復(fù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python中ThreadPoolExecutor線程池和ProcessPoolExecutor進程池

    python中ThreadPoolExecutor線程池和ProcessPoolExecutor進程池

    這篇文章主要介紹了python中ThreadPoolExecutor線程池和ProcessPoolExecutor進程池,文章圍繞主題相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06
  • pip安裝python庫的方法總結(jié)

    pip安裝python庫的方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于使用pip安裝python庫的幾種常用方法,有需要的朋友們可以參考下。
    2019-08-08
  • python3 pillow模塊實現(xiàn)簡單驗證碼

    python3 pillow模塊實現(xiàn)簡單驗證碼

    這篇文章主要為大家詳細(xì)介紹了python3 pillow模塊實現(xiàn)簡單驗證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 使用Pandas進行Excel數(shù)據(jù)處理的操作和技巧

    使用Pandas進行Excel數(shù)據(jù)處理的操作和技巧

    在數(shù)據(jù)處理和分析的過程中,Excel是一個非常常見的工具,然而,當(dāng)數(shù)據(jù)量變大,操作復(fù)雜度增加時,Excel的效率和功能可能無法滿足需求,Pandas是一個強大的Python數(shù)據(jù)處理庫,本文將介紹如何使用Pandas進行Excel數(shù)據(jù)處理,并展示一些常見的操作和技巧
    2023-11-11
  • python中entry用法講解

    python中entry用法講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python中entry用法講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-12-12

最新評論

莲花县| 清涧县| 探索| 柳江县| 连城县| 景宁| 江口县| 宁城县| 长岛县| 云安县| 宾川县| 武定县| 平凉市| 利津县| 江门市| 大新县| 台南县| 曲阳县| 江西省| 巩义市| 通许县| 凤凰县| 湘潭县| 青铜峡市| 兰西县| 鄂托克前旗| 嘉黎县| 敦煌市| 赤水市| 商丘市| 吉首市| 封丘县| 积石山| 钟山县| 连云港市| 焉耆| 华坪县| 新干县| 荔波县| 杭州市| 乌鲁木齐县|