Е
Евгений_Канусовский@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
                  Ua

                  Qt - Тест 001. Сигналы и слоты

                  • Результат:84бали,
                  • Рейтинг балів4
                  Ua

                  Qt - Тест 001. Сигналы и слоты

                  • Результат:42бали,
                  • Рейтинг балів-8
                  ОК

                  Qt - Тест 001. Сигналы и слоты

                  • Результат:47бали,
                  • Рейтинг балів-6
                  Останні коментарі
                  ИМ
                  Игорь Максимов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 аналогично. Могу предположить, что из-за более новой верси…
                  Тепер обговоріть на форумі
                  Дмитрий
                  Дмитрий03 лютого 2025 р. 06:24
                  Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
                  NW
                  Nayo Wai30 січня 2025 р. 09:22
                  не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
                  n
                  nkly03 січня 2025 р. 02:52
                  Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
                  M
                  Marsel16 серпня 2023 р. 14:26
                  OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
                  Evgenii Legotckoi
                  Evgenii Legotckoi24 червня 2024 р. 15:11
                  добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.

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