Выдает ошибку но работает , помогите разобраться. где копать, что ни так? Только учусь. Спасибо
QObject::connect: Cannot queue arguments of type 'QTextCharFormat'
(Make sure 'QTextCharFormat' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
import sys
import threading
from PyQt5 import QtWidgets, QtCore, QtGui
import logging
def thread(func):
"""threading"""
def wrapper(*args, **kwargs):
my_thread = threading.Thread(target=func, args=args, kwargs=kwargs)
my_thread.start()
return wrapper
class QTextEditLogger(logging.Handler):
"""logging update"""
def __init__(self, parent):
super().__init__()
self.widget = QtWidgets.QTextEdit(parent)
self.widget.setReadOnly(True)
self.widget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
def emit(self, record):
msg = self.format(record)
if record.levelname == 'BET':
self.widget.setTextColor(QtGui.QColor(26, 122, 19))
elif record.levelname == 'UPDATE':
self.widget.setTextColor(QtGui.QColor(30, 53, 158))
elif record.levelname == 'MESSAGE':
self.widget.setTextColor(QtGui.QColor(244, 66, 83))
elif record.levelname == 'UPDATE BET':
self.widget.setTextColor(QtGui.QColor(201, 115, 30))
else:
self.widget.setTextColor(QtGui.QColor(0, 0, 0))
self.widget.append(msg)
self.widget.ensureCursorVisible()
class MyDialog(QtWidgets.QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.logTextBox = QTextEditLogger(self)
self.logTextBox.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', "%H:%M:%S"))
logging.getLogger().setLevel(logging.INFO)
self._button = QtWidgets.QPushButton(self)
self._button.setText('message')
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.logTextBox.widget)
layout.addWidget(self._button)
self.setLayout(layout)
self.log_update('WELCOME AUCTION BOT ')
self._button.clicked.connect(lambda: self.log_message('AUCTION BOT '))
@thread
def log_update(self, text):
"""log format update """
UPDATE = 35
logging.getLogger().addHandler(self.logTextBox)
logging.addLevelName(UPDATE, 'UPDATE')
assert logging.getLevelName(UPDATE) == 'UPDATE'
logging.log(UPDATE, text)
@thread
def log_message(self, text):
"""log format message """
MESSAGE = 45
logging.getLogger().addHandler(self.logTextBox)
logging.addLevelName(MESSAGE, 'MESSAGE')
assert logging.getLevelName(MESSAGE) == 'MESSAGE'
logging.log(MESSAGE, text)
app = QtWidgets.QApplication(sys.argv)
dlg = MyDialog()
dlg.show()
dlg.raise_()
sys.exit(app.exec_())