Файловый браузер PyQt - как работать с этим файлом? - PullRequest
0 голосов
/ 27 мая 2018

Я пишу свое первое приложение на python, используя pyqt5.Все мои значки и основные надписи работают правильно, все модули импортированы.Теперь мне нужно соединить все вместе.Здесь у меня самая большая проблема.Когда я нажимаю на значок, он открывает браузер файлов;затем я нажимаю на файл .pdf и ... здесь я бы хотел, чтобы моя программа запустила def dzielenieStron (), но она вылетает из моей программы.Я пробовал много разных решений, но до сих пор не нашел ответа, вот часть кода, которая не взаимодействует:

 def openFile(self):
        self.fileName = QtWidgets.QFileDialog.getOpenFileName(None, 'Wybierz plik')
        self.name = open(fileName, 'rb')
        self.dzielenieStron()

    def dzielenieStron(self):
        ReaderSplitPage = PyPDF2.PdfFileReader(self.name, 'rb')
        for page in range(ReaderSplitPage.getNumPages()):
            p = ReaderSplitPage.getPage(page)
            WriterSplitPage = PyPDF2.PdfFileWriter()
            WriterSplitPage.addPage(p)
            with open('page-%02d.pdf' % page, 'wb') as f:  # Tworzy nazwy plikow po kolei
                WriterSplitPage.write(f)

Конечно, все строки находятся на одном уровне.Я не знаю, почему здесь это изменилось ...

Буду благодарен за ваши советы

1 Ответ

0 голосов
/ 27 мая 2018

Попробуйте:

def openFile(self):
    pathFileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, 'Wybierz plik', '', 'pdf(*.pdf)')   
    print("pathFileName-`{}`, \n_-`{}`".format(pathFileName, _))
    if pathFileName:
        print("Wybrany plik: ", pathFileName)
        f = open(pathFileName, 'rb')
        self.dzielenieStron(f)

def dzielenieStron(self, f):   
    with f:
        ReaderSplitPage = PyPDF2.PdfFileReader(f, 'rb')
        for page in range(ReaderSplitPage.getNumPages()):
            p = ReaderSplitPage.getPage(page)
            WriterSplitPage = PyPDF2.PdfFileWriter()
            WriterSplitPage.addPage(p)
            with open('page-%02d.pdf' % page, 'wb') as f:  # Tworzy nazwy plikow po kolei
                WriterSplitPage.write(f)   
...