基于Logging库实现日志输出到PYQT的文本框,考虑到多线程的情况使用信号。
class QTTextBrowserStreamHandler(logging.Handler):
"""
QT文本框日志输出
"""
__update_signal: pyqtSignal = pyqtSignal(str,
name="update text browser")
def __init__(self,
text_browser: QTextBrowser,
max_line: int = 100) -> None:
"""
初始化
:param text_browser: QTextBrowser文本框
:param max_line: 最长显示行数
"""
super().__init__()
self.__text_browser = text_browser
self.__max_line = max_line
self.__existed_line = 0
self.__update_signal.connect(self.__update_text)
def __update_text(self,
text: str) -> None:
"""
更新文本框
:param text: 内容
:return: None
"""
if self.__existed_line >= self.__max_line:
self.__text_browser.clear()
self.__existed_line = 0
self.__text_browser.setText(text)
self.__existed_line += 1