Как я могу добавить имя файла / каталог нескольких изображений в список / массив с PyQt5 - PullRequest
0 голосов
/ 15 апреля 2020

Я использую PyQt5 и QtDesigner для создания GUI, где я могу выбирать разные фотографии из папки. Я хочу, чтобы имена фотографий были сохранены в списке.

Например:

[0]: Image_Nike_AirMax_Size/9.0
[1]: Image_Adidas_Continental_Size/8.5, and so on.

Затем я хочу выбрать информацию о каждой фотографии, например «Размер», и сохранить ее отдельно в переменной.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog, QDialog
from PyQt5.QtGui import QIcon
from PyQt5.uic import loadUi

class Fenster(QDialog):
    def __init__(self):
        super(Fenster, self).__init__()
        loadUi('Projekt.ui', self)
        #self.b1.clicked.connect(self.gedrueckt)
        self.pushButton_2.clicked.connect(self.button)

    def button(self):
        self.open_dialog_box()

    def open_dialog_box(self):
        filename = QFileDialog.getOpenFileNames(self, 'Select Multi File', 'default', 'All Files (*)'))

        for name in filename:
            idx = name.find("/")
            print(name[idx+1:])


app = QApplication(sys.argv)
w = Fenster()
w.show()
sys.exit(app.exec_())

В моем коде вы видите приближение к цели, но это не совсем получается.

1 Ответ

0 голосов
/ 16 апреля 2020

Приведенный ниже код сохраняет файлы в один список, сохраняет размер каждого файла в другом списке и, наконец, объединяет их.

import os
from pathlib import Path

    def open_dialog_box(self):
        """Open files and populate lists."""
        full_path, _ = QFileDialog.getOpenFileNames(self, "Select Multi File", os.getcwd())

        # Store files in list
        self.file_list = []
        [self.file_list.append(path) for path in full_path]

        [print(f) for f in self.file_list]

        # Store size of each file in KB
        self.file_size = []
        for f in self.file_list:
            self.file_size.append(Path(f).stat().st_size)

        [print(f) for f in self.file_size]

        # Combine lists
        self.complete = zip(self.file_list, self.file_size)

        [print(c) for c in self.complete]
...