PyQt5实现多张图⽚显⽰并滚动
最近要做个⽹页图⽚批量下载⼯具,然后需要⼀个页⾯显⽰⽹页上的所有图⽚供⽤户勾选,再根据勾选的内容来下载指定图⽚,其中就涉及到要到同时显⽰多张图⽚。
单页⾯显⽰多张图⽚
习惯性的⽤GridLayout但是发现怎么长时间解决都⽆法实现滚动,这样就会强制压缩图⽚⼤⼩,导致图⽚较多时显⽰的图⽚太⼩,不是我想要的,后⾯⽹上借鉴了⼀下⽤了ScrollArea实现了
代码如下:
import sys
import requests
from PyQt5.QtWidgets import (QWidget,  QLabel,QVBoxLayout,QCheckBox,QGridLayout, QScrollArea,QApplication)
怎么把图片做成滚动图片from PyQt5.QtGui import  QPixmap
from PyQt5.QtCore import Qt,QSize
class Picture(QWidget):
def __init__(self, parent=None, url=None):
super().__init__(parent)
self.url = url
self.ui()
def ui(self):
self.setFixedSize(850,600)
layout = QGridLayout()
total = len(self.url)
self.setLayout(layout)
self.sc = QScrollArea(self)
self.qw = QWidget()
if total % 5 == 0:
rows = int(total/5)
else:
rows = int(total/5) + 1
self.qw.setMinimumSize(850,230*rows)
for i in  range(total):
pre_url = self.url[i].split("?")[0]
sup = pre_url.split(".")[-1]
req = (self.url[i])
photo = QPixmap()
photo.t)
width = photo.width()
height = photo.height()
if width==0 or height==0:
continue
tmp_image = Image()
size = QSize(width,height)
tmp = QWidget(self.qw)
vl = QVBoxLayout()
label= QLabel()
label.setFixedSize(150,200)
label.setStyleSheet("border:1px solid gray")
label.setPixmap(photo)
label.setScaledContents(True)
ck = QCheckBox(str(i)+"."+sup+"("+str(width)+"x"+str(height)+")", self)
vl.addWidget(label)
vl.addWidget(ck)
tmp.setLayout(vl)
self.sc.setWidget(self.qw)
if __name__ == '__main__':
app = QApplication(sys.argv)
url=['pic2.zhimg/aadd7b895_xs.jpg?source=1940ef5c', 'pic2.zhimg/50/v2-60f7b5c071d378a34a3a6c489c3fdacc_hd.jpg?source=1940ef5c', 'pic2.zhimg/80/v2-60f7b5c071d378a34a3a6c489c3fdacc_720w.jpg?source=1940ef5    pic = Picture(url=url)
pic.show()
<_())
效果如下:
其中要计算好QWdiget的⾼度才能滚动,不然会发现可滚动的不⾜导致部分看不到或者滚动太多导致部分空⽩,都不好看。
到此这篇关于PyQt5实现多张图⽚显⽰并滚动的⽂章就介绍到这了,更多相关PyQt5 图⽚显⽰滚动内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!