0


【简单的图像信息展示应用程序】PYQt5

写在前面的话

这段代码的作用是创建一个简单的图像信息展示应用程序,用户可以点击按钮查看特定文件夹中图像的文件名、大小,并通过查看按钮查看图像。请注意,文件夹路径需要根据实际情况进行修改。

代码讲解

这段代码是使用PyQt5库创建一个简单的图像信息展示应用程序。它包含一个主窗口类

MainWindow

和一个图像信息对话框类

ImageInfoDialog

首先,代码导入了必要的PyQt5模块和

os

模块。然后定义了

MainWindow

类,继承自

QMainWindow

,它是应用程序的主窗口。在

MainWindow

的构造函数中,设置了窗口的标题、大小和布局。创建了一个垂直布局,并将其设置为主窗口的中心部件。接着创建了一个按钮

QPushButton

,并将其添加到布局中。通过

clicked

信号连接到

show_image_info

槽函数。

show_image_info

函数是

MainWindow

类的一个方法,它在按钮被点击时调用。该方法创建了一个

ImageInfoDialog

实例,并显示出来。

ImageInfoDialog

类是一个继承自

QDialog

的自定义对话框类,用于显示图像的信息。在构造函数中,设置了对话框的标题、大小和布局,并创建了一个表格

QTableWidget

用于显示图像的文件名、大小和查看按钮。

通过

populate_table

方法,获取指定文件夹下的文件列表,并将文件信息填充到表格中。每一行的查看按钮与

show_image

槽函数连接,用于展示图像。

defpopulate_table(self):
    folder_path =r'E:\DL\Spelling-Rectifier-Web-App\images'# 修改为实际的文件夹路径
    files = os.listdir(folder_path)
    self.table.setRowCount(len(files))for i, filename inenumerate(files):
        file_path = os.path.join(folder_path, filename)
        item = QTableWidgetItem(filename)
        self.table.setItem(i,0, item)
        size = os.path.getsize(file_path)
        item = QTableWidgetItem(f'{size /1024:.2f} KB')
        self.table.setItem(i,1, item)
        button = QPushButton('View', self.table)
        button.clicked.connect(lambda state, f=file_path: self.show_image(f))
        self.table.setCellWidget(i,2, button)
    self.table.resizeColumnsToContents()
show_image

函数根据文件路径加载图像,并在一个新的对话框中显示。它使用

QPixmap

QLabel

来展示图像。

defshow_image(self, file_path):
    pixmap = QPixmap(file_path)ifnot pixmap.isNull():
        self.dialog = QDialog()
        self.dialog.setWindowTitle('View Image')
        self.dialog.setGeometry(500,500, pixmap.width()+20, pixmap.height()+20)
        self.dialog.setLayout(QVBoxLayout())
        label = QLabel(self.dialog)
        label.setPixmap(pixmap)
        self.dialog.layout().addWidget(label)
        self.dialog.exec_()

最后,在

__main__

块中创建了一个

QApplication

实例,实例化了

MainWindow

类并显示主窗口,最后通过调用

app.exec_()

启动应用程序的事件循环。

完整代码

from PyQt5.QtCore import*from PyQt5.QtGui import*from PyQt5.QtWidgets import*import os

classMainWindow(QMainWindow):def__init__(self):super().__init__()
        self.setWindowTitle('MainWindow')
        self.setGeometry(300,300,800,600)
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        layout = QVBoxLayout(self.central_widget)
        self.button = QPushButton('Show Images Info', self.central_widget)
        layout.addWidget(self.button)
        self.button.clicked.connect(self.show_image_info)defshow_image_info(self):
        self.image_info_dialog = ImageInfoDialog()
        self.image_info_dialog.show()classImageInfoDialog(QDialog):def__init__(self):super().__init__()
        self.setWindowTitle('Image Information')
        self.setGeometry(400,400,800,600)
        self.setLayout(QVBoxLayout())
        self.table = QTableWidget()
        self.layout().addWidget(self.table)
        self.table.setColumnCount(3)
        self.table.setHorizontalHeaderLabels(['Filename','Size','View'])
        self.table.horizontalHeader().setStretchLastSection(True)
        self.table.verticalHeader().setVisible(False)
        self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.table.setShowGrid(False)
        self.populate_table()'''文件检索'''defpopulate_table(self):
        folder_path =r'E:\DL\Spelling-Rectifier-Web-App\images'# 修改为实际的文件夹路径
        files = os.listdir(folder_path)
        self.table.setRowCount(len(files))for i, filename inenumerate(files):
            file_path = os.path.join(folder_path, filename)
            item = QTableWidgetItem(filename)
            self.table.setItem(i,0, item)
            size = os.path.getsize(file_path)
            item = QTableWidgetItem(f'{size /1024:.2f} KB')
            self.table.setItem(i,1, item)
            button = QPushButton('View', self.table)
            button.clicked.connect(lambda state, f=file_path: self.show_image(f))
            self.table.setCellWidget(i,2, button)
        self.table.resizeColumnsToContents()defshow_image(self, file_path):
        pixmap = QPixmap(file_path)ifnot pixmap.isNull():
            self.dialog = QDialog()
            self.dialog.setWindowTitle('View Image')
            self.dialog.setGeometry(500,500, pixmap.width()+20, pixmap.height()+20)
            self.dialog.setLayout(QVBoxLayout())
            label = QLabel(self.dialog)
            label.setPixmap(pixmap)
            self.dialog.layout().addWidget(label)
            self.dialog.exec_()if __name__ =='__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

代码功能演示

在这里插入图片描述

注意事项

  1. 检索图像的文件路径要正确
  2. 图像显示大小不能调整

本文转载自: https://blog.csdn.net/weixin_42899627/article/details/131275635
版权归原作者 G果 所有, 如有侵权,请联系我们删除。

“【简单的图像信息展示应用程序】PYQt5”的评论:

还没有评论