源代码
需要安装pyqt5这个库
# -*- coding: utf-8 -*-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QPushButton, QFileDialog, QAction, QSlider, QHBoxLayout, QWidget
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt, QSize
import sys
import osclass ImageViewer(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("图片浏览器")self.setGeometry(100, 100, 800, 400)self.image_label_1 = QLabel(self)self.image_label_1.setAlignment(Qt.AlignCenter)self.image_name_label_1 = QLabel(self)self.image_name_label_1.setAlignment(Qt.AlignCenter)self.image_label_2 = QLabel(self)self.image_label_2.setAlignment(Qt.AlignCenter)self.image_name_label_2 = QLabel(self)self.image_name_label_2.setAlignment(Qt.AlignCenter)self.slider = QSlider(Qt.Horizontal, self)self.slider.valueChanged.connect(self.slider_value_changed)self.current_index = 0self.image_paths = []layout = QHBoxLayout()layout_1 = QVBoxLayout()layout_1.addWidget(self.image_label_1)layout_1.addWidget(self.image_name_label_1)layout_2 = QVBoxLayout()layout_2.addWidget(self.image_label_2)layout_2.addWidget(self.image_name_label_2)layout.addLayout(layout_1)layout.addLayout(layout_2)vbox = QVBoxLayout()vbox.addLayout(layout)vbox.addWidget(self.slider)central_widget = QWidget(self)central_widget.setLayout(vbox)self.setCentralWidget(central_widget)self.create_menu()self.load_images()def create_menu(self):open_folder_action = QAction("打开文件夹", self)open_folder_action.triggered.connect(self.open_folder)menubar = self.menuBar()file_menu = menubar.addMenu("文件")file_menu.addAction(open_folder_action)def open_folder(self):folder_dialog = QFileDialog.getExistingDirectory(self, "选择文件夹")if folder_dialog:self.image_paths = self.get_image_files(folder_dialog)if self.image_paths:self.current_index = 0self.load_images()def get_image_files(self, folder_path):image_files = []for file_name in os.listdir(folder_path):if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):image_files.append(os.path.join(folder_path, file_name))return image_filesdef load_images(self):if self.image_paths:if self.current_index < len(self.image_paths):image_path_1 = self.image_paths[self.current_index]pixmap_1 = QPixmap(image_path_1)self.image_label_1.setPixmap(pixmap_1.scaled(QSize(300, 300), aspectRatioMode=Qt.AspectRatioMode.KeepAspectRatio))self.image_name_label_1.setText(os.path.basename(image_path_1))else:self.image_label_1.clear()self.image_name_label_1.clear()if self.current_index + 1 < len(self.image_paths):image_path_2 = self.image_paths[self.current_index + 1]pixmap_2 = QPixmap(image_path_2)self.image_label_2.setPixmap(pixmap_2.scaled(QSize(300, 300), aspectRatioMode=Qt.AspectRatioMode.KeepAspectRatio))self.image_name_label_2.setText(os.path.basename(image_path_2))else:self.image_label_2.clear()self.image_name_label_2.clear()self.slider.setMinimum(0)self.slider.setMaximum(len(self.image_paths) - 1)self.slider.setValue(self.current_index)def slider_value_changed(self, value):self.current_index = valueself.load_images()if __name__ == '__main__':app = QApplication(sys.argv)viewer = ImageViewer()viewer.show()sys.exit(app.exec_())