Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Как выбрать несколько файлов в PyQt5  (Прочитано 2258 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Axa-Ru

  • Автор темы
  • Гость
Коллеги, пытаюсь заставить PyQt сделать выбор нескольких файлов. Ничего не получается.

Код: (python) [Выделить]
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import (QMainWindow, QTextEdit,
    QAction, QFileDialog, QApplication)
from PyQt5.QtGui import QIcon

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.textEdit = QTextEdit()
        self.setCentralWidget(self.textEdit)
        self.statusBar()

        openFile = QAction(QIcon('open.png'), 'Open', self)
        openFile.setShortcut('Ctrl+O')
        openFile.setStatusTip('Open new File')
        openFile.triggered.connect(self.showDialog)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(openFile)


        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('File dialog')
        self.show()


    def showDialog(self):

        data = ''                            #  здесь я храню список файлов

        dialogSelectFiles = QFileDialog()
        dialogSelectFiles.setFileMode(QFileDialog.ExistingFiles)
        dialogSelectFiles.setOption(QFileDialog.DontUseNativeDialog)

        # здесь я хочу прочитать список файлов и сохранить его в data
        for fname in dialogSelectFiles.getOpenFileName(self, 'Open file', '/home/axa/Stuff'):
            data = data + fname

        # В текстовом редакторе показать список
        self.textEdit.setText(data)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Подскажите, кто знает.

Пользователь решил продолжить мысль [time]27 Март 2016, 13:58:31[/time]:
Решение 1
Ну вот че за фигня?
Вчера пол дня читал, смотрел, пробовал.
Сегодня задал вопрос на форуме и через 20 минут нашел решение.
Бред какой то....


Код: (python) [Выделить]
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import (QMainWindow, QTextEdit,
    QAction, QFileDialog, QApplication)
from PyQt5.QtGui import QIcon

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.textEdit = QTextEdit()
        self.setCentralWidget(self.textEdit)
        self.statusBar()

        openFile = QAction(QIcon('open.png'), 'Open', self)
        openFile.setShortcut('Ctrl+O')
        openFile.setStatusTip('Open new File')
        openFile.triggered.connect(self.showDialog)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(openFile)


        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('File dialog')
        self.show()


    def showDialog(self):


        dialogSelectFiles = QFileDialog()
        dialogSelectFiles.setFileMode(QFileDialog.ExistingFiles)      # включение множественного выбора

        #dialogSelectFiles.setOption(QFileDialog.DontUseNativeDialog) # независимо от этой опции в любом
                                                                      # случае используется не нативный
                                                                      # диалог

        dialogSelectFiles.exec_()

        data = dialogSelectFiles.selectedFiles()
        self.textEdit.setText('\n'.join(data))


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


Пользователь решил продолжить мысль [time]27 Март 2016, 13:58:31[/time]:
Решение 2

Вместо метода getOpenFileName нужно использовать метод getOpenFileNames (кто бы мог подумать? 8-))
Код: (python) [Выделить]
dialogSelectFiles.getOpenFileNames(self, 'Open file', '/home/axa/Stuff'):
Исправленный код начала топика:

Код: (python) [Выделить]
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import (QMainWindow, QTextEdit,
                             QAction, QFileDialog, QApplication)
from PyQt5.QtGui import QIcon


class Example(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.textEdit = QTextEdit()
        self.setCentralWidget(self.textEdit)
        self.statusBar()

        openFile = QAction(QIcon('open.png'), 'Open', self)
        openFile.setShortcut('Ctrl+O')
        openFile.setStatusTip('Open new File')
        openFile.triggered.connect(self.showDialog)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(openFile)

        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('File dialog')
        self.show()

    def showDialog(self):

        dialogSelectFiles = QFileDialog()
        dialogSelectFiles.setFileMode(QFileDialog.ExistingFiles)

        # прочитать список файлов и сохранить его в data
        fname = dialogSelectFiles.getOpenFileNames(self, 'Open file', '/home/axa/Stuff')
        data = '\n'.join(fname[0])

        # В текстовом редакторе показать список файлов
        self.textEdit.setText(data)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

« Последнее редактирование: 27 Марта 2016, 13:30:37 от Axa-Ru »

 

Страница сгенерирована за 0.016 секунд. Запросов: 20.