1、项目简介

        图片浏览器基于PyQt5来实现,用了designer工具进行了界面搭建,实现了图片预览、图片切换、图片缩放等功能。

        PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。

2、项目结构

浏览器怎么打开python文件 python 文件浏览器_pycharm

项目名称为:PicProject

测试图片文件夹:存放4张图片

其他:包含直接放在项目文件夹下面的一个python代码与一个designer生成的ui文件

注意:先创建项目,根据图中项目结构创建好对应的文件夹,4张图片先放进测试图片文件夹里面

3、图片浏览器的实现

3.1界面搭建

使用QtPy搭建功能界面,如下图

浏览器怎么打开python文件 python 文件浏览器_pyqt_02

 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、运行结果

运行后就可以浏览图片、切换图片、放大缩小图片了。

浏览器怎么打开python文件 python 文件浏览器_pycharm_03

浏览器怎么打开python文件 python 文件浏览器_python_04

 

浏览器怎么打开python文件 python 文件浏览器_python_05