Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 177b96f0

Přidáno uživatelem Martin Forejt před téměř 4 roky(ů)

  • ID 177b96f074b8b849236ada3591a01f5624260c34
  • Rodič 9187b769

Re: #8893 - connect logger view with logger

Zobrazit rozdíly:

aswi2021vochomurka/view/logger_view.py
1
import logging
2

  
3
from PyQt5.QtWidgets import QPlainTextEdit
4

  
5

  
6
class LoggerView(logging.Handler):
7
    def __init__(self, parent):
8
        super().__init__()
9

  
10
        self.widget = QPlainTextEdit(parent)
11
        self.widget.setReadOnly(True)
12
        self.widget.setFixedHeight(120)
13

  
14
    def emit(self, record):
15
        msg = self.format(record)
16
        self.widget.insertPlainText(msg + '\n')
17
        self.widget.verticalScrollBar().setValue(self.widget.verticalScrollBar().maximum())
18
        pass
19

  
20
    def write(self, m):
21
        pass
aswi2021vochomurka/view/main_view.py
1
import logging
1 2
import math
2 3
import random
3 4

  
......
23 24
import matplotlib.pyplot as plt
24 25
import random
25 26

  
27
from aswi2021vochomurka.view.logger_view import LoggerView
28

  
26 29

  
27 30
class Worker(QObject, SubscriberCallback):
28 31
    connected = pyqtSignal()
......
79 82
        self.setMinimumSize(QSize(440, 240))
80 83
        self.setWindowTitle("MQTT demo")
81 84

  
82
        # Add text field
83
        self.b = QPlainTextEdit(self)
84
        self.b.insertPlainText("App started...\n")
85
        # self.b.move(10, 50)
86
        # self.b.resize(200, 100)
85
        # Add logger text field
86
        logger = LoggerView(self)
87
        formatter = logging.Formatter('%(asctime)s %(message)s', '%H:%M')
88
        logger.setFormatter(formatter)
89
        logger.setLevel(logging.INFO)
90
        logging.getLogger('').addHandler(logger)
87 91

  
88 92
        layout = QVBoxLayout()
89
        layout.addWidget(self.b)
93
        layout.addWidget(logger.widget)
90 94
        layout.addWidget(self.toolbar)
91 95
        layout.addWidget(self.canvas)
92 96

  
......
98 102

  
99 103
    # action called by thte push button
100 104
    def plot(self):
101

  
102 105
        self.chartsNum += 1
103 106
        rows = math.ceil(self.chartsNum / 2)
104 107

  
......
118 121
        self.worker = Worker()
119 122
        self.worker.moveToThread(self.workerThread)
120 123
        self.workerThread.started.connect(self.worker.start)
121
        self.worker.newMessage.connect(
122
            lambda message: self.b.insertPlainText(message + "\n")
123
        )
124
        # self.worker.newMessage.connect(
125
        #    lambda message: self.b.insertPlainText(message + "\n")
126
        # )
124 127
        self.worker.window = self
125 128
        self.workerThread.start()

Také k dispozici: Unified diff