随着计算机技术的飞速发展,图形用户界面(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的基本用法,并能够独立开发简单的GUI应用程序。希望本文能够对读者有所帮助,激发读者对Python编程和GUI开发的兴趣。未来,读者可以在此基础上,进一步扩展和优化图片播放器的功能,开发出更加实用和美观的应用程序。
本文来源于#一晌小贪欢,由@蜜芽 整理发布。如若内容造成侵权/违法违规/事实不符,请联系本站客服处理!
该文章观点仅代表作者本人,不代表本站立场。本站不承担相关法律责任。
如若转载,请注明出处:https://www.zhanid.com/biancheng/3229.html




















