用PyQt实现简单的图片浏览器

本文介绍了一个基于PyQt5的简易图片浏览器的设计与实现过程。浏览器包含一个滚动区域,用于适应不同大小的图片,并通过QFileDialog组件实现了从本地选择图片的功能。文章详细展示了组件架构和代码实现,适用于初学者学习。
一,目标

​实现简单的图片浏览器,有一个打开按钮,点击该按钮弹出选择窗口,在电脑磁盘中选择图片文件并打开

二,组件架构

QMainWindow

|----QScrollArea (CentralWidget)

​    |----QWidget (QVboxLayout)

​        |----QLabel (QPixmap)

三,注意事项
  1. QScrollArea一般需要配合一个QWidget作为内部容器使用
  2. QScrollArea的widgetResizable属性用于控制滚动区域的内容部署层是否应跟随滚动区域的大小变化进行大小跟随调整,一般设置为True
  3. QLabel需要设置居中显示
四,代码
import sys

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QMainWindow, QScrollArea, QWidget, QVBoxLayout, QLabel, QApplication, QAction, QToolBar, \
    QFileDialog


class QmyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.resize(800, 600)
        self.setWindowTitle("图片浏览器")
        self.qScrollArea = QScrollArea(self)
        self.qScrollArea.setWidgetResizable(True)
        self.setCentralWidget(self.qScrollArea)

        self.qWidget = QWidget()
        self.qScrollArea.setWidget(self.qWidget)

        self.qVBoxLayout = QVBoxLayout()
        self.qWidget.setLayout(self.qVBoxLayout)

        self.qLabel = QLabel()
        self.qVBoxLayout.addWidget(self.qLabel)
        self.qLabel.setAlignment(Qt.AlignCenter)

        self.qToolBar = QToolBar()
        self.qAction = QAction("打开")
        self.qToolBar.addAction(self.qAction)
        self.addToolBar(self.qToolBar)

        self.qAction.triggered.connect(self.openImage)

    def openImage(self):
        file, filter = QFileDialog.getOpenFileName(self, "请选择图片文件", "", "图片文件(*.png *.bmp *.jpg *.jpeg)")
        self.qLabel.setPixmap(QPixmap(file))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mw = QmyMainWindow()
    mw.show()
    sys.exit(app.exec_(), )
五,效果展示

如果图片过大则显示滚动条,图片小则显示原图
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值