Е
Евгений_Канусовский@198130 серпня 2018 р. 00: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
  • 01 вересня 2018 р. 03:52

Добрый день

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


    Е
    • 01 вересня 2018 р. 05:16

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

      Е
      • 01 вересня 2018 р. 07: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)
          Е
          • 05 вересня 2018 р. 12:24

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

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

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


              Е
              • 06 вересня 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_())
                Е
                • 07 вересня 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_())

                  Коментарі

                  Only authorized users can post comments.
                  Please, Log in or Sign up
                  AD

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

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

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

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

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

                  • Результат:20бали,
                  • Рейтинг балів-10
                  Останні коментарі
                  ИМ
                  Игорь Максимов22 листопада 2024 р. 11:51
                  Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                  Evgenii Legotckoi
                  Evgenii Legotckoi31 жовтня 2024 р. 14:37
                  Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                  A
                  ALO1ZE19 жовтня 2024 р. 08:19
                  Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                  ИМ
                  Игорь Максимов05 жовтня 2024 р. 07:51
                  Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                  d
                  dblas505 липня 2024 р. 11:02
                  QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                  Тепер обговоріть на форумі
                  Evgenii Legotckoi
                  Evgenii Legotckoi24 червня 2024 р. 15:11
                  добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                  t
                  tonypeachey115 листопада 2024 р. 06:04
                  google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                  NSProject
                  NSProject04 червня 2022 р. 03:49
                  Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                  9
                  9Anonim25 жовтня 2024 р. 09:10
                  Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                  Слідкуйте за нами в соціальних мережах