PyQt5, текст из *.txt файла не загружается в QTextEdit

Программа должна выводить текст из обычного .txt документа (кодировка - utf-8) в текстовое поле QTextEdit.

Программа аварийно завершается без сообщения об ошибке. Как нужно исправить код? И объясните причину ошибки, если она будет не очевидна. Спасибо.

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QFileDialog, QTextEdit

prg = QApplication(sys.argv)

tex_pole = QTextEdit()

def load():
    path = QFileDialog.getOpenFileName(parent=None, caption='Обрати файл', filter='text *.txt')[0]
    fil = open(path, 'r', encoding='utf-8')
    txt = fil.readlines()
    tex_pole.setText(txt)

window = QWidget()
vbx = QVBoxLayout()
hbx_zavant_zbereh_knp = QHBoxLayout()
knp_zavant_text = QPushButton('Загрузить текст')
knp_zavant_text.clicked.connect(load)
hbx_zavant_zbereh_knp.addWidget(knp_zavant_text)
vbx.addLayout(hbx_zavant_zbereh_knp)
vbx.addWidget(tex_pole)
window.setLayout(vbx)

window.show()

sys.exit(prg.exec())

Ответы (2 шт):

Автор решения: Serg Bocharov

Проблема в том, readlines() возвращает List[], а setText() - принимает строку str в качестве аргумента. Самый простой вариант, чтобы было понятно где причина:

def load():
    path = QFileDialog.getOpenFileName(parent=None, caption='Обрати файл', filter='text *.txt')[0]
    fil = open(path, 'r', encoding='utf-8')
    txt = str(fil.readlines())
    tex_pole.setText(txt)
→ Ссылка
Автор решения: S. Nick

причина очевидна:

tex_pole.setText(txt)

TypeError: setText(self, str): argument 1 has unexpected type 'list'

Всегда запускайте свое приложение в терминале/CMD и вы получите понятную ошибку.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, \
    QHBoxLayout, QPushButton, QFileDialog, QTextEdit


prg = QApplication(sys.argv)

tex_pole = QTextEdit()

def load():
    path = QFileDialog.getOpenFileName(parent=None, caption='Обрати файл', filter='text *.txt')[0]
    fil = open(path, 'r', encoding='utf-8')
    txt = fil.read()                            # - readlines()  + read
    tex_pole.setText(txt)

window = QWidget()
vbx = QVBoxLayout()
hbx_zavant_zbereh_knp = QHBoxLayout()
knp_zavant_text = QPushButton('Загрузить текст')
knp_zavant_text.clicked.connect(load)
hbx_zavant_zbereh_knp.addWidget(knp_zavant_text)
vbx.addLayout(hbx_zavant_zbereh_knp)
vbx.addWidget(tex_pole)
window.setLayout(vbx)

window.show()

sys.exit(prg.exec())

введите сюда описание изображения

→ Ссылка