Е
Евгений_Канусовский@198116 октября 2019 г. 7:58

Почему в python при нажатии на "Отмена" при открытии нескольких файлов программа вылетает?

Добрый день! Не подскажите почему в python при нажатии на "Отмена" при открытии нескольких файлов методом QFileDialog.getOpenFileNames программа вылетает?

Код:

import sys
import codecs

from vira import *
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QDialog, QFileDialog, QMessageBox, QLineEdit, QProgressBar, QProgressDialog)
from PyQt5.QtCore import QDir, QDirIterator


class MyWin (QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__ (self, parent)
        self.ui = Ui_MainWindow ()
        self.ui.setupUi (self)

        self.ui.pushButton.clicked.connect (self.Open)
        self.ui.pushButton_2.clicked.connect (self.close)

    def Open(self):
        self.ui.textEdit.clear ()
        files, _ = QFileDialog.getOpenFileNames (self, "Выбрать файлы", "/home", "*.txt")
        hjh = list (filter (lambda x: x != '*.las *.txt', files))
        myString = '\n'.join (hjh)
        self.ui.textEdit.setText (myString)
        if self.ui.comboBox.currentIndex () == 0:
            strx = self.ui.textEdit.toPlainText ()
            strxList = strx.split ('\n')
        else:
            strx = self.ui.textEdit.toPlainText ()
            strxList = strx.split ('\n')

        for jk in range (0, len (strxList), 1):
            print (strxList[jk])
            f = codecs.open (strxList[jk], 'r', encoding='cp866')
            for line in f:
                pkp = 1
                for lk in range (0, len(line), 1):
                    if line[lk] == '0' or line[lk] == '1' or line[lk] == '2' or line[lk] == '3' or line[lk] == '4' or line[lk] == '5' or line[lk] == '6' or line[lk] == '7' or line[lk] == '8' or line[lk] == '9' or line[lk] == '.' or line[lk] == ',' or line[lk] == '-' or line[lk] == '\n' or line[lk] == ' ' or line[lk] == '  ':#or line[lk:(lk+2)] != '--' or line[lk] != '#':
                        pkp += 1
                if pkp == len(line):
                    print(line[0:len(line)-1])
                    self.ui.textEdit.append(line[0:len(line)-2])
            f.close()

if __name__ == "__main__":
    app = QtWidgets.QApplication (sys.argv)
    myapp = MyWin ()
    myapp.show ()
    sys.exit (app.exec_ ())
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

4
Evgenii Legotckoi
  • 16 октября 2019 г. 8:09
  • Ответ был помечен как решение.

Добрый день.

Полагаю потому, что в случае нажатия "Отмена" у вас всё равно возвращается какой-то список, только пустой. Нужно добавить проверку

Скорее всего должно выглядеть как-то так

files, _ = QFileDialog.getOpenFileNames (self, "Выбрать файлы", "/home", "*.txt")
if not files.isEmpty():
    # Остальной код

или

files, _ = QFileDialog.getOpenFileNames (self, "Выбрать файлы", "/home", "*.txt")
if len(files) > 0:
    # Остальной код

Не знаю, какой именно синтаксис там будет правильный, не помню, заменяется ли QStringList в PyQt5 на обычный python list или нет.

    Е
    • 16 октября 2019 г. 8:18

    Благодарю Вас Евгений за оперативность)) Второй вариант сработал))

      Используйте, пожалуйста при вставке программного кода диалоговое окно, кнопка вот с этим значком <>

        Е
        • 16 октября 2019 г. 8:34

        Хорошо, запомнил

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь
          AD

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:50баллов,
          • Очки рейтинга-4
          m
          • molni99
          • 26 октября 2024 г. 1:37

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:80баллов,
          • Очки рейтинга4
          m
          • molni99
          • 26 октября 2024 г. 1:29

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:20баллов,
          • Очки рейтинга-10
          Последние комментарии
          i
          innorwall13 ноября 2024 г. 23:03
          Как написать игру на Qt - Урок 3. Взаимодействие с другими объектами what is priligy tablets What happens during the LASIK surgery process
          i
          innorwall13 ноября 2024 г. 20:09
          Использование переменных объявленных в CMakeLists.txt внутри C++ файлов where can i buy priligy online safely Tom Platz How about things like we read about in the magazines like roid rage and does that really
          i
          innorwall11 ноября 2024 г. 22:12
          Django - Урок 055. Как написать функционал auto populate field Freckles because of several brand names retin a, atralin buy generic priligy
          i
          innorwall11 ноября 2024 г. 18:23
          QML - Урок 035. Использование перечислений в QML без C++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
          i
          innorwall11 ноября 2024 г. 15:50
          Qt/C++ - Урок 052. Кастомизация Qt Аудио плеера в стиле AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
          Сейчас обсуждают на форуме
          i
          innorwall13 ноября 2024 г. 18:52
          добавить qlineseries в функции PMID 35774217 Free PMC article priligy cvs
          i
          innorwall11 ноября 2024 г. 10:55
          Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
          9
          9Anonim25 октября 2024 г. 9:10
          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
          ИМ
          Игорь Максимов3 октября 2024 г. 4:05
          Реализация навигации по разделам Спасибо Евгений!

          Следите за нами в социальных сетях