Е
Евгений_Канусовский@198130 августа 2018 г. 0:15

Перенос названий выбранных в проводнике файлов в textedit

Добрый день Евгений и форумчане! Возникла такая проблема: создал форму в дизайнере с кнопкой и textedit, программирую событие для кнопки при нажатии на которую открывается проводник и названия (пути) выбранных файлов должны попасть в textedit. но почему-то после выбора файлов программа вылетает, хотя в консоль всё передается без проблем. Вот код:
import sys
from vira import *
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QDialog, QFileDialog, QMessageBox, QLineEdit, QProgressBar, QProgressDialog)

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

# Вешаем на кнопку функцию Open
self.ui.pushButton.clicked.connect(self.Open)
self.ui.pushButton_2.clicked.connect(self.close)
#self.ui.pushButton_2.clicked.connect(self.open)

def Open(self):
self.ui.textEdit.clear()
fileNames= QFileDialog.getOpenFileNames(self, "Выбрать файлы", "/home", "*.las *.txt")
print(fileNames) # печать в консоль работает
self.ui.textEdit.append(fileNames) # печать в texteEdit программа вылетает

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

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

8
Evgenii Legotckoi
  • 1 сентября 2018 г. 3:52

Добрый день

Так попробуйте
ui.textEdit.setText(fileNames)


    Е
    • 1 сентября 2018 г. 5:16

    Тоже пробовал, опять вылетает

      Е
      • 1 сентября 2018 г. 7:52
      В Qt этот алгоритм выглядит так:
      ui->textEdit->clear();
              QStringList files = QFileDialog::getOpenFileNames(this,"Выбрать файлы","/home","*.las *.txt");
              QStringList list = files;
              QStringList::Iterator it = list.begin();
              while(it != list.end())
              {
                  if (QDir::match("*.las *.txt", *it) || QDir::match("*.txt", *it))
                  {
                      ui->textEdit->append(*it);
                      ++it;
                  }
              }

      а как реализовать его в python не знаю...

        Думаю, что в python можно и без итератора обойтись, просто циклом for


        for filename in files:
            if filename.endsWith("*.las") or filename.endsWith("*.txt"):
        		self.ui.textEdit.append(filename)
          Е
          • 5 сентября 2018 г. 12:24

          Опять ругается:

            странно... у вас там список в качестве объекта,

            что висит в выводе?


              Е
              • 6 сентября 2018 г. 11:12
              Список файлов, вот код:
              import sys
              from re import match

              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)

              # Вешаем на кнопку функцию Open
              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", "*.las *.txt")
              print(files)
              for filename in files:
              if filename.endsWith("*.las") or filename.endsWith("*.txt"):
              self.ui.textEdit.append(filename)


              if __name__=="__main__":
              app = QtWidgets.QApplication(sys.argv)
              myapp = MyWin()
              myapp.show()
              sys.exit(app.exec_())
                Е
                • 7 сентября 2018 г. 13:01
                • Ответ был помечен как решение.
                Оказалось всё намного проще))
                import sys
                from re import match

                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)

                # Вешаем на кнопку функцию Open
                self.ui.pushButton.clicked.connect(self.Open)
                self.ui.pushButton_2.clicked.connect(self.close)
                #self.ui.pushButton_2.clicked.connect(self.open)

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


                if __name__=="__main__":
                app = QtWidgets.QApplication(sys.argv)
                myapp = MyWin()
                myapp.show()
                sys.exit(app.exec_())

                  Комментарии

                  Только авторизованные пользователи могут публиковать комментарии.
                  Пожалуйста, авторизуйтесь или зарегистрируйтесь
                  d
                  • dsfs
                  • 26 апреля 2024 г. 14:56

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

                  • Результат:80баллов,
                  • Очки рейтинга4
                  d
                  • dsfs
                  • 26 апреля 2024 г. 14:45

                  C++ - Тест 002. Константы

                  • Результат:50баллов,
                  • Очки рейтинга-4
                  d
                  • dsfs
                  • 26 апреля 2024 г. 14:35

                  C++ - Тест 001. Первая программа и типы данных

                  • Результат:73баллов,
                  • Очки рейтинга1
                  Последние комментарии
                  k
                  kmssr9 февраля 2024 г. 5:43
                  Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                  АК
                  Анатолий Кононенко5 февраля 2024 г. 12:50
                  Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                  EVA
                  EVA25 декабря 2023 г. 21:30
                  Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                  J
                  JonnyJo25 декабря 2023 г. 19:38
                  Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                  G
                  Gvozdik19 декабря 2023 г. 8:01
                  Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                  Сейчас обсуждают на форуме
                  IscanderChe
                  IscanderChe30 апреля 2024 г. 14:22
                  Во Flask рендер шаблона не передаётся в браузер Доброе утро! Имеется вот такой шаблон: <!doctype html><html> <head> <title>{{ title }}</title> <link rel="stylesheet" href="{{ url_…
                  G
                  Gar22 апреля 2024 г. 15:46
                  Clipboard Как скопировать окно целиком в clipb?
                  DA
                  Dr Gangil Academics20 апреля 2024 г. 17:45
                  Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
                  a
                  a_vlasov14 апреля 2024 г. 16:41
                  Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
                  Павел Дорофеев
                  Павел Дорофеев14 апреля 2024 г. 12:35
                  QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь

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