1、项目简介
图片浏览器基于PyQt5来实现,用了designer工具进行了界面搭建,实现了图片预览、图片切换、图片缩放等功能。
PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。
2、项目结构
项目名称为:PicProject
测试图片文件夹:存放4张图片
其他:包含直接放在项目文件夹下面的一个python代码与一个designer生成的ui文件
注意:先创建项目,根据图中项目结构创建好对应的文件夹,4张图片先放进测试图片文件夹里面
3、图片浏览器的实现
3.1界面搭建
使用QtPy搭建功能界面,如下图
3.2 对应按钮功能的实现
打开图片目录按钮
def OpenPictureDir(self):
#在资源管理器窗口中打开默认路径
selectimgFolder = QtWidgets.QFileDialog.getExistingDirectory(None, "select folder",self.defaultImFolder)
#如果有选中路径
if selectimgFolder != '':
self.imgFolder=selectimgFolder
#获取该路径下面所有的图片名称列表
self.imageNameList = os.listdir(self.imgFolder)
#print(imageNameList)
if len(self.imageNameList)>0:
#获取第一张图片的路径
imgPath = os.path.join(self.imgFolder, self.imageNameList[0])
#绘制图片,显示出来
self.pix = QtGui.QPixmap(imgPath)
self.label_Image.setPixmap(self.pix)
#标记第一张图片的id为0
self.curImgId = 0
上一张按钮
def ShowBeforeImg(self):
#如果不存在图片,则跳出
if len(self.imageNameList) == 0:
return
# 当前如果不是第一张图片,才能显示上一张
if self.curImgId > 0:
imPath = os.path.join(self.imgFolder, self.imageNameList[self.curImgId-1])
self.pix = QtGui.QPixmap(imPath)
self.label_Image.setPixmap(self.pix)
self.curImgId = self.curImgId - 1
if self.curImgId < 0:
self.curImgId = 0
下一张按钮
def ShowNextImg(self):
# 如果不存在图片,则跳出
if len(self.imageNameList)==0:
return
imgCount = len(self.imageNameList)
#当前如果不是最后一张图片,才可以显示下一张
if self.curImgId<imgCount-1:
imPath = os.path.join(self.imgFolder, self.imageNameList[self.curImgId+1])
self.pix = QtGui.QPixmap(imPath)
self.label_Image.setPixmap(self.pix)
self.curImgId = self.curImgId+1
放大按钮
def DoBiggerImg(self):
# 如果不存在图片,则跳出
if len(self.imageNameList) == 0:
return
#控制放大后,高度最大不超过900
if self.label_Image.height()>=900:
return
self.label_Image.setFixedSize(int(self.label_Image.width()*1.1),int(self.label_Image.height()*1.1))
缩小按钮
def DoSmallerImg(self):
# 如果不存在图片,则跳出
if len(self.imageNameList) == 0:
return
# 控制缩小后后,高度最小不小于100
if self.label_Image.height() <= 100:
return
self.label_Image.setFixedSize(int(self.label_Image.width() * 0.9), int(self.label_Image.height() * 0.9))
恢复原图按钮
def DoYuanTuImg(self):
# 如果不存在图片,则跳出
if len(self.imageNameList) == 0:
return
# 显示原图的大小
self.label_Image.setFixedSize(661, 341)
print("恢复的原图大小:", int(self.label_Image.width()), int(self.label_Image.height()))
主函数入口
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())
监听单价对应功能按钮
# 设置图片的默认路径为当前工作路径(项目的路径)
self.defaultImFolder = os.getcwd()
# 设置为填充模式(图片填充满Label)
self.label_Image.setScaledContents(True)
# 监听按钮的单击
self.pushButton_Open.clicked.connect(self.OpenPictureDir)
self.pushButton_Next.clicked.connect(self.ShowNextImg)
self.pushButton_Before.clicked.connect(self.ShowBeforeImg)
self.pushButton_Bigger.clicked.connect(self.DoBiggerImg)
self.pushButton_Smaller.clicked.connect(self.DoSmallerImg)
self.pushButton_YuanTu.clicked.connect(self.DoYuanTuImg)
self.imageNameList = []
4、运行结果
运行后就可以浏览图片、切换图片、放大缩小图片了。