使用PyQt5实现图片浏览器

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

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

 

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5是一款基于Python的GUI库,提供了丰富的功能和组件可用于创建各种类型的应用程序。要实现浏览图片的功能,可以使用PyQt5中的QFileDialog和QLabel组件。 首先,需要导入PyQt5和相关模块: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QLabel from PyQt5.QtGui import QPixmap ``` 然后,创建一个继承自QMainWindow的窗口类,重写其中的一些方法,并添加一个QLabel用于显示图片: ```python class ImageViewer(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.label = QLabel(self) self.setCentralWidget(self.label) self.setWindowTitle('图片浏览器') self.setGeometry(100, 100, 500, 500) ``` 在initUI()方法中,创建了一个QLabel作为中央控件,并将其设置为窗口的中央部分。接下来,需要添加一个方法来处理打开图片的事件: ```python def openImage(self): options = QFileDialog.Options() options |= QFileDialog.ReadOnly fileName, _ = QFileDialog.getOpenFileName(self, "打开图片", "", "图像文件 (*.png *.jpg *.bmp)", options=options) if fileName: pixmap = QPixmap(fileName) self.label.setPixmap(pixmap) self.label.adjustSize() ``` 这个方法首先创建了一个QFileDialog以供用户选择要打开的图片。然后,检查是否选择了有效的文件名。如果选择了有效的文件名,就创建一个QPixmap对象,并使用setPixmap()方法设置给label,然后调整label的大小以适应图片。 最后,需要将该方法连接到打开图片的动作: ```python def initUI(self): self.label = QLabel(self) self.setCentralWidget(self.label) self.setWindowTitle('图片浏览器') self.setGeometry(100, 100, 500, 500) openAction = QAction('打开', self) openAction.setShortcut('Ctrl+O') openAction.triggered.connect(self.openImage) menubar = self.menuBar() fileMenu = menubar.addMenu('文件') fileMenu.addAction(openAction) ``` 在initUI()方法中,创建了一个打开动作,并设置快捷键为Ctrl+O。将该动作连接到openImage()方法,然后创建一个菜单栏,并在文件菜单中添加该动作。 最后,创建应用程序实例,并运行: ```python if __name__ == '__main__': app = QApplication(sys.argv) window = ImageViewer() window.show() sys.exit(app.exec_()) ``` 这样就实现了一个简单的图片浏览器应用程序。用户可以通过点击文件菜单中的打开动作来选择并浏览图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值