前言:
如今小伙伴们对“scrollpicjs”大体比较着重,咱们都需要剖析一些“scrollpicjs”的相关内容。那么小编也在网上网罗了一些对于“scrollpicjs””的相关知识,希望朋友们能喜欢,兄弟们一起来了解一下吧!想法:在程序界面上滚动显示一张大尺寸的图像,单击图像可以自适应显示。
实现:当图像的大小超过图片展示区时,但又要显示原始图像大小。可以考虑使用ScrollArea来滚动显示图像。
演示界面UI
界面元素:一个ListView,用来加载目录中的图像文件名,一个ScrollArea,里面放置一个Label,用来显示图像。
实现功能和代码:
import sysimport osfrom PyQt5 import QtCore, QtGui,QtWidgetsfrom Ui_picview import Ui_MainWindow class MainWindow(QtWidgets.QMainWindow,Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.imgname="" #设置图片控件的双击事件 self.lblimg.mousePressEvent=self.img_scale #设置图片控件文本提示 self.lblimg.setToolTip("双击自动调整大小") #获取当前目录 curdir=os.path.abspath(os.curdir) #获取当前目录下的所有图片文件 lstimg=["选择文件夹"] for root,dir,file in os.walk(curdir): for f in file: if os.path.splitext(f)[1] in ['.jpg','.png','.bmp']: lstimg.append(os.path.join(root,f)) #把图片文件列表放到listview中 slm=QtCore.QStringListModel() slm.setStringList(lstimg) self.lstimg.setModel(slm) #图片列表单击事件 def on_lstimg_clicked(self,index): #获取当前图片文件名 self.imgname=self.lstimg.model().stringList()[index.row()] if self.imgname=="选择文件夹": #打开选择文件夹对话框 dirname=QtWidgets.QFileDialog.getExistingDirectory(self,'选择文件夹') lstimg=["选择文件夹"] for root,dir,file in os.walk(dirname): for f in file: if os.path.splitext(f)[1] in ['.jpg','.png','.bmp']: lstimg.append(os.path.join(root,f)) #把图片文件列表放到listview中 slm=QtCore.QStringListModel() slm.setStringList(lstimg) self.lstimg.setModel(slm) else: #获取图像的宽高 img=QtGui.QImage(self.imgname) h,w,c=img.height(),img.width(),img.format() #设置scrollarea的滚动范围和自动调整大小 self.scrollAreaWidgetContents.setMinimumSize(w,h) #设置图像控件的宽高 self.lblimg.setFixedSize(w,h) #显示图片 self.lblimg.setPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(self.imgname))) self.statusBar().showMessage(self.imgname) #图像控件鼠标注事件, def img_scale(self,event): #设置大小为滚动区域的大小 self.lblimg.setFixedSize(self.scroll.width(),self.scroll.height()) #设置图像大小自适应控件大小 self.lblimg.setPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(self.imgname)).scaled(self.lblimg.width(), self.lblimg.height(),QtCore.Qt.KeepAspectRatio)) if __name__ == '__main__': app=QtWidgets.QApplication(sys.argv) window=MainWindow() window.setWindowTitle("picview") window.show() sys.exit(app.exec_())实现效果
当图像大小超过滚动区域时,就可以使用滚动来显示图像
标签: #scrollpicjs