新建一个pyqt5,要求实现点击“打开文件夹”按钮,即可自主选择所需的图片所在的文件夹,并将选中的文件夹的第一张图片展示到label中,点击“下一张”按钮,可展示下一张图片,点击“上一张”按钮,可展示上一张图片,并带有label可以展示当前图片的文件路径除此之外,还包含“运行”、“保存”、“手动”这三个按钮
时间: 2023-07-16 18:13:05 浏览: 313
下面是一个简单的实现该功能的代码示例:
```python
import os
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout, QFileDialog
from PyQt5.QtGui import QPixmap
class ImageViewer(QWidget):
def __init__(self):
super().__init__()
# 初始化界面
self.initUI()
# 当前图片的索引
self.index = 0
# 图片文件夹的路径
self.folder_path = ''
# 图片文件夹中的所有图片文件名列表
self.image_files = []
def initUI(self):
# 标签用于显示图片
self.image_label = QLabel(self)
self.image_label.setFixedSize(500, 500)
# 标签用于显示当前图片的文件路径
self.path_label = QLabel(self)
self.path_label.setFixedHeight(30)
# 按钮用于打开文件夹选择框
self.open_button = QPushButton('打开文件夹', self)
self.open_button.clicked.connect(self.show_folder_dialog)
# 按钮用于展示上一张图片
self.prev_button = QPushButton('上一张', self)
self.prev_button.clicked.connect(self.show_prev_image)
# 按钮用于展示下一张图片
self.next_button = QPushButton('下一张', self)
self.next_button.clicked.connect(self.show_next_image)
# 按钮用于保存当前图片
self.save_button = QPushButton('保存', self)
# 按钮用于运行程序
self.run_button = QPushButton('运行', self)
# 按钮用于手动操作
self.manual_button = QPushButton('手动', self)
# 垂直布局,依次添加控件
vbox = QVBoxLayout()
vbox.addWidget(self.image_label)
vbox.addWidget(self.path_label)
vbox.addWidget(self.open_button)
vbox.addWidget(self.prev_button)
vbox.addWidget(self.next_button)
vbox.addWidget(self.save_button)
vbox.addWidget(self.run_button)
vbox.addWidget(self.manual_button)
# 设置窗口布局和标题
self.setLayout(vbox)
self.setGeometry(100, 100, 500, 600)
self.setWindowTitle('图片浏览器')
def show_folder_dialog(self):
# 打开文件夹选择框
folder_path = QFileDialog.getExistingDirectory(self, '选择文件夹')
if folder_path:
# 如果选择了文件夹,更新图片文件夹的路径和图片文件名列表
self.folder_path = folder_path
self.image_files = sorted(os.listdir(folder_path))
# 如果图片文件不为空,展示第一张图片
if self.image_files:
self.index = 0
self.show_image()
def show_prev_image(self):
# 展示上一张图片
if self.index > 0:
self.index -= 1
self.show_image()
def show_next_image(self):
# 展示下一张图片
if self.index < len(self.image_files) - 1:
self.index += 1
self.show_image()
def show_image(self):
# 更新标签上的图片和文件路径
image_path = os.path.join(self.folder_path, self.image_files[self.index])
pixmap = QPixmap(image_path)
self.image_label.setPixmap(pixmap)
self.path_label.setText(image_path)
if __name__ == '__main__':
app = QApplication([])
image_viewer = ImageViewer()
image_viewer.show()
app.exec_()
```
注意,该示例只是一个简单的实现,还有很多可以优化和改进的地方。
阅读全文