使用Python和PyQt6开发图片播放器(附示例代码)

一晌小贪欢 2025-02-18 10:54:46编程技术
439

随着计算机技术的飞速发展,图形用户界面(GUI)的应用程序越来越受到人们的青睐。Python作为一种高效、简洁的编程语言,结合PyQt6库,可以轻松创建功能强大的GUI应用程序。本文将介绍如何使用Python和PyQt6开发一个图片播放器,并提供示例代码,帮助读者快速上手。

1、背景介绍

我们可以利用pyqt6创建一个图片查看器,其中包括,选则一个包含多张图片的文件夹,然后点击按钮【下一页】或者【上一页】进行图片的翻页

2、库的安装

用途安装
PyQt6界面设计pip install PyQt6 -i https://pypi.tuna.tsinghua.edu.cn/simple/

3、核心代码

①:图片展示

def showImage(self, imagePath):
    self.current_pixmap = QPixmap(imagePath)
    self.resizeImage()

②:自适应尺寸缩放

def resizeImage(self):
    if self.current_pixmap:
        # 获取标签的大小
        label_size = self.lb.size()
        # 保持纵横比缩放图片以适应标签大小
        scaled_pixmap = self.current_pixmap.scaled(
            label_size.width(),
            label_size.height(),
            Qt.AspectRatioMode.KeepAspectRatio,
            Qt.TransformationMode.SmoothTransformation
        )
        self.lb.setPixmap(scaled_pixmap)

4、完整代码

import sys
import os

from PyQt6.QtCore import Qt
from PyQt6.QtGui import QPixmap
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QApplication, QLabel, QFileDialog, QPushButton, QHBoxLayout


class MyWidget(QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.setWindowTitle("图片浏览器")
        self.resize(500, 350)

        # 修改 QLabel 的设置
        self.lb = QLabel()
        self.lb.setMinimumSize(200, 200)  # 设置最小尺寸
        self.lb.setAlignment(Qt.AlignmentFlag.AlignCenter)  # 居中对齐

        # 选择文件夹按钮
        self.selectFolderButton = QPushButton("选择文件夹")
        self.selectFolderButton.clicked.connect(self.selectFolder)

        # 上一张按钮
        self.prevButton = QPushButton("上一张")
        self.prevButton.clicked.connect(self.showPrevImage)

        # 下一张按钮
        self.nextButton = QPushButton("下一张")
        self.nextButton.clicked.connect(self.showNextImage)

        # 默认图片列表
        self.imageFiles = []
        self.currentIndex = -1
        self.current_pixmap = None  # 添加存储当前图片的变量

        # 布局设置
        layout = QVBoxLayout()

        # 图片标签占据主要空间
        layout.addWidget(self.lb, 1)  # 添加拉伸因子1

        # 按钮布局
        buttonLayout = QHBoxLayout()
        buttonLayout.addWidget(self.prevButton)
        buttonLayout.addWidget(self.selectFolderButton)
        buttonLayout.addWidget(self.nextButton)

        layout.addLayout(buttonLayout)
        self.setLayout(layout)

    def selectFolder(self):
        folderPath = QFileDialog.getExistingDirectory(self, "选择文件夹")
        if folderPath:
            self.imageFiles = [os.path.join(folderPath, f) for f in os.listdir(folderPath)
                               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]
            self.currentIndex = 0
            if self.imageFiles:
                self.showImage(self.imageFiles[self.currentIndex])

    def showImage(self, imagePath):
        self.current_pixmap = QPixmap(imagePath)
        self.resizeImage()

    def showPrevImage(self):
        if self.imageFiles and self.currentIndex > 0:
            self.currentIndex -= 1
            self.showImage(self.imageFiles[self.currentIndex])

    def showNextImage(self):
        if self.imageFiles and self.currentIndex < len(self.imageFiles) - 1:
            self.currentIndex += 1
            self.showImage(self.imageFiles[self.currentIndex])

    def resizeEvent(self, event):
        super().resizeEvent(event)
        self.resizeImage()

    def resizeImage(self):
        if self.current_pixmap:
            # 获取标签的大小
            label_size = self.lb.size()
            # 保持纵横比缩放图片以适应标签大小
            scaled_pixmap = self.current_pixmap.scaled(
                label_size.width(),
                label_size.height(),
                Qt.AspectRatioMode.KeepAspectRatio,
                Qt.TransformationMode.SmoothTransformation
            )
            self.lb.setPixmap(scaled_pixmap)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec())

最后效果

使用Python和PyQt6开发图片播放器(附示例代码)

总结

本文详细介绍了如何使用Python和PyQt6开发一个图片播放器。通过本文的学习,读者可以掌握Python和PyQt6的基本用法,并能够独立开发简单的GUI应用程序。希望本文能够对读者有所帮助,激发读者对Python编程和GUI开发的兴趣。未来,读者可以在此基础上,进一步扩展和优化图片播放器的功能,开发出更加实用和美观的应用程序。

Python PyQt6 图片播放器
THE END
蜜芽
故事不长,也不难讲,四字概括,毫无意义。

相关推荐

Python yield 用法大全:轻松掌握生成器与迭代器设计
在Python中,yield关键字是构建生成器的核心工具,它通过状态保存机制实现了高效的内存管理和惰性计算。与传统的迭代器实现相比,yield能将迭代器设计从复杂的类定义简化为直...
2025-09-15 编程技术
548

基于Python的旅游数据分析可视化系统【2026最新】
本研究成功开发了基于Python+Django+Vue+MySQL的旅游数据分析可视化系统,实现了从数据采集到可视化展示的全流程管理。系统采用前后端分离架构,前端通过Vue框架构建响应式界...
2025-09-13 编程技术
573

手把手教你用Python读取txt文件:从基础到实战的完整教程
Python作为数据处理的利器,文件读写是其基础核心功能。掌握txt文件读取不仅能处理日志、配置文件等常见场景,更是理解Python文件I/O的基石。本文ZHANID工具网将从基础语法到...
2025-09-12 编程技术
544

Python Flask 入门指南:从零开始搭建你的第一个 Web 应用
Flask作为 Python 中最轻量级且灵活的 Web 框架之一,特别适合初学者快速上手 Web 应用开发。本文将带你一步步了解如何在本地环境中安装 Flask、创建一个简单的 Web 应用,并...
2025-09-11 编程技术
533

Python 如何调用 MediaPipe?详细安装与使用指南
MediaPipe 是 Google 开发的跨平台机器学习框架,支持实时处理视觉、音频和文本数据。本文脚本之家将系统讲解 Python 环境下 MediaPipe 的安装、配置及核心功能调用方法,涵盖...
2025-09-10 编程技术
575

基于Python开发一个利率计算器的思路及示例代码
利率计算是金融领域的基础需求,涵盖贷款利息、存款收益、投资回报等场景。传统计算依赖手工公式或Excel表格,存在效率低、易出错等问题。Python凭借其简洁的语法和强大的数学...
2025-09-09 编程技术
516