随着计算机技术的飞速发展,图形用户界面(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
THE END