class LogWindow(QWidget): def __init__(self, window): super(LogWindow, self).__init__() self.main_window = window self.set_ui() # sys.stdout = OutputStream(textWritten=logger.stdout) # sys.stderr = OutputStream(textWritten=logger.stderr) self.log_thread = LogThread() self.log_thread.signal.connect(self.append_log) self.log_thread.start() def set_ui(self): self._set_window() self._set_log_ui() # self.move((self.main_window.geometry().x() + self.main_window.geometry().width()) * 1.05, # self.main_window.geometry().y()) def _set_window(self): self.setWindowTitle(self.tr('DebugLog')) self.setMinimumHeight(self.main_window.geometry().height()) self.setMinimumWidth(self.main_window.geometry().width() / 3 * 2) self.main_layout = QVBoxLayout(self) def _set_log_ui(self): log_frame = QFrame() log_layout = QGridLayout(log_frame) self.main_layout.addWidget(log_frame) self.textedit_log = QTextEdit() self.textedit_log.setAcceptDrops(False) # self.textedit_log.setEnabled(False) log_layout.addWidget(self.textedit_log) btn_clear_log = QPushButton('ClearLog') btn_clear_log.clicked.connect(self.clear_log) log_layout.addWidget(btn_clear_log) def append_log(self, item): try: msg = '<p style="color:{};">{}</p>'.format( item.get('color', 'black'), item['text']) self.textedit_log.insertHtml(msg) self.textedit_log.insertPlainText('\r\n') self.textedit_log.moveCursor(QTextCursor.End) except Exception as e: pass # print(e) def clear_log(self): try: self.textedit_log.setText('') except Exception as e: pass # print(e) def closeEvent(self, event): self.main_window.ui.logAction.setText('Open-Log') super(LogWindow, self).closeEvent(event)