class LogDialog(QDialog): def __init__(self, parent, rpt_file_path): self.rpt_file_path = rpt_file_path QDialog.__init__(self, parent) self.setWindowTitle('Log: ' + self.rpt_file_path) main_lay = QVBoxLayout(self) self.txt_log = QPlainTextEdit(self) self.txt_log.setMinimumWidth(500) self.txt_log.setMinimumHeight(300) main_lay.addWidget(self.txt_log) self.btn_close = QPushButton('Close') self.btn_close.clicked.connect(self.close_dialog) main_lay.addWidget(self.btn_close) self.fill_txt() def close_dialog(self): self.close() def fill_txt(self): with codecs.open(self.rpt_file_path, 'r', encoding='UTF-8') as inp_f: lines = inp_f.read().splitlines() for line in lines: self.txt_log.appendPlainText(line.replace('\b', '')) # Scroll up self.txt_log.moveCursor(QTextCursor.Start) self.txt_log.ensureCursorVisible()