Пример #1
0
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)