国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - PyQt5入門之基于QListWidget版本實現圖片縮略圖列表功能

PyQt5入門之基于QListWidget版本實現圖片縮略圖列表功能

2022-01-03 15:17蝦米小餛飩 Python

這篇文章主要介紹了PyQt5入門之基于QListWidget版本實現圖片縮略圖列表功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

需求描述

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

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

 

示例效果

PyQt5入門之基于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,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)

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

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

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_())

 

小結

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

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

原文鏈接:https://blog.csdn.net/Bit_Coders/article/details/120084229

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产免费自拍 | 超碰免费成人 | 日韩高清一区 | 91精品一区二区 | 午夜资源| 黄视频免费 | 久久久777 | 大胆裸体gogo毛片免费看 | 日韩精品免费在线观看 | 搞黄网站 | 欧美日韩中文字幕在线 | 色花av| 日本久久久久久久久久 | 91精品国产综合久久福利 | 亚洲va欧美va天堂v国产综合 | 精品国产一区二区三区日日嗨 | 凹凸国产成人精品视频免费 | 亚洲午夜精品视频 | 动漫爱爱视频 | 日本久久综合 | 国产成人av网站 | 婷婷精品久久久久久久久久不卡 | 91精品免费| 91人人| 中文精品在线观看 | 国产日产久久高清欧美一区 | 视频一二区 | 成人爽视频 | 久国产精品韩国三级视频 | 亚洲精品一区在线观看 | 婷婷色国产偷v国产偷v小说 | 国产在线精品一区 | 欧美精品一区二区三区四区 | 欧美一级淫片丝袜脚交 | 91新视频| 中文字幕在线三区 | 夜夜操比 | 色婷婷精品国产一区二区三区 | 在线观看成人国产 | 国产一二三区在线观看 | 日韩国产中文字幕 |