Revize 177b96f0
Přidáno uživatelem Martin Forejt před téměř 4 roky(ů)
- ID 177b96f074b8b849236ada3591a01f5624260c34
- Rodič 9187b769
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
Re: #8893 - connect logger view with logger