TG-PlatformPlus/richLogForm.py

38 lines
1.2 KiB
Python

from PyQt6.QtWidgets import QWidget, QPlainTextEdit
from PyQt6.QtCore import QTimer, QThread, pyqtSignal
import queue
class RichLogThread(QThread):
def __init__(self, parent=None):
super().__init__(parent)
self.logQueue = queue.Queue()
self.maxLines = 5000
self.logLines = []
def run(self):
while True:
if not self.logQueue.empty():
logData = self.logQueue.get()
self.logLines.append(logData)
if len(self.logLines) > self.maxLines:
self.logLines.pop(0)
QThread.usleep(1)
class RichLogForm(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = QPlainTextEdit(self)
self.ui.setReadOnly(True)
self.timer = QTimer()
self.logThread = RichLogThread()
self.timer.timeout.connect(self.updateLogDisplay)
self.timer.start(100)
self.logThread.start()
def addLog(self, logData):
self.logThread.logQueue.put(logData)
def updateLogDisplay(self):
if self.logThread.logLines:
self.ui.appendHtml("".join(self.logThread.logLines))
self.logThread.logLines = []