Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать поле для добавления фалов в PyQt5?

Дмитрий Ершов Ученик (86), открыт 3 дня назад
Собственно заголовок отражает суть вопроса. Мне нужно создать поле в приложении, в которое можно загрузить файлы, и потом как-то с ними работать. Есть какой-то способ сделать такое?
3 ответа
Анонимус Мудрец (16042) 3 дня назад
 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_())
Дмитрий ЕршовУченик (86) 2 дня назад
Спасибо огромное!
Вертолётов 625 Мудрец (13288) 3 дня назад
Код:
 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_())
Дмитрий ЕршовУченик (86) 2 дня назад
Спасибо!
Похожие вопросы