PyQt5入门——QListWidget实现图片缩略图列表

本文介绍了一个基于QListWidget的图像查看工具的实现,通过创建自定义的ImageListWidget展示图片缩略图,点击缩略图可在右侧预览大图。代码示例展示了如何加载图片路径到列表并响应选中变化。为了优化性能,实际应用中建议异步加载图片。

需求描述

最近在写一个图像标注小工具,其中需要用到一个缩略图列表,来查看文件夹内的图片文件。

这里整理一个基于QListWidget实现的版本,简单可用。

示例效果

在这里插入图片描述

代码示例

QListWidget官方文档:[link]

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

  • itemSelectionChanged:所选项发生变化时发送。

先定义缩略图列表部分,继承自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,
要在PyQtQListWidget中显示图片,可以通过以下步骤实现: 1. 首先,创建一个自定义的QListWidget部件,继承自QListWidget类,并定义一个add_image_items方法,用于添加图片项。 2. 在add_image_items方法中,遍历图片路径列表,并使用os.path.isfile函数来确保路径指向的是一个文件。然后,使用QListWidgetItem类创建一个项,并通过setIcon和setText方法设置项的图标和文本。 3. 调用addItem方法将项添加到QListWidget中。 4. 在主程序中,创建一个ImageListWidget实例,并调用其add_image_items方法,传入要显示的图片路径列表5. 最后,将ImageListWidget实例添加到窗口布局中,以显示图片。 以下是一个示例代码,演示如何使用PyQtQListWidget显示图片: ```python import os from qtpy.QtCore import QSize from qtpy.QtGui import QIcon from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QListView, QWidget, QApplication, QHBoxLayout, QLabel class ImageListWidget(QListWidget): def __init__(self): super(ImageListWidget, self).__init__() self.setFlow(QListView.TopToBottom) # 设置为从上到下排列 self.setIconSize(QSize(150, 100)) # 设置图标的大小为150x100 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) self.addItem(item) # 创建应用程序和窗口 app = QApplication([]) window = QWidget() layout = QHBoxLayout(window) # 创建并添加图片列表部件 image_list_widget = ImageListWidget() image_list_widget.add_image_items(["path/to/image1.jpg", "path/to/image2.jpg", "path/to/image3.jpg"]) layout.addWidget(image_list_widget) window.show() app.exec_() ``` 这段代码创建了一个ImageListWidget部件,继承自QListWidget,然后在add_image_items方法中添加了要显示的图片项。最后,将ImageListWidget部件添加到窗口布局中,通过执行应用程序来显示窗口。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [PyQt5入门——QListWidget实现图片缩略图列表](https://blog.csdn.net/Bit_Coders/article/details/120084229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Qt5.9中使用列表控件QListWidget显示缩略图(完全模仿Windows图片视图文档)](https://blog.csdn.net/naibozhuan3744/article/details/81070068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值