import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QListView, QPushButton, QVBoxLayout, QFileDialog, QAbstractItemView, QStringListModel
from PyQt5.QtCore import Qt
class FileSelector(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Выбор файлов")
self.label = QLabel("Выберите файлы:")
self.list_view = QListView()
self.list_view.setSelectionMode(QAbstractItemView.MultiSelection) #Разрешаем множественный выбор
self.string_list_model = QStringListModel()
self.list_view.setModel(self.string_list_model)
self.button = QPushButton("Обзор...")
self.button.clicked.connect(self.open_file_dialog)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.list_view)
layout.addWidget(self.button)
self.setLayout(layout)
def open_file_dialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
file_names, _ = QFileDialog.getOpenFileNames(self, "Выберите файлы", "", "All Files (*);;Python Files (*.py)", options=options)
if file_names:
self.string_list_model.setStringList(file_names)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = FileSelector()
window.show()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QListWidget, QFileDialog
class FileUploader(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# Создаем вертикальный макет для размещения виджетов
layout = QVBoxLayout(self)
# Кнопка для добавления файлов
self.addButton = QPushButton('Добавить файлы', self)
self.addButton.clicked.connect(self.addFiles)
# Список для отображения выбранных файлов
self.fileListWidget = QListWidget(self)
# Добавляем виджеты в макет
layout.addWidget(self.addButton)
layout.addWidget(self.fileListWidget)
# Устанавливаем основной макет окна
self.setLayout(layout)
# Заголовок и размер окна
self.setWindowTitle('Загрузчик файлов')
self.resize(400, 300)
def addFiles(self):
# Открываем диалоговое окно для выбора файлов
files, _ = QFileDialog.getOpenFileNames(self, "Выберите файлы", "", "Все файлы (*);;Текстовые файлы (*.txt)")
# Добавляем выбранные файлы в QListWidget
if files:
for file in files:
self.fileListWidget.addItem(file)
def getSelectedFiles(self):
# Получаем список выбранных файлов из QListWidget
return [self.fileListWidget.item(i).text() for i in range(self.fileListWidget.count())]
if __name__ == '__main__':
app = QApplication(sys.argv)
uploader = FileUploader()
uploader.show()
sys.exit(app.exec_())