python中logging内容展示在pyqt多线程问题
但是照搬原代码,会提示
QObject::connect: Cannot queue arguments of type 'QTextBlock'
(Make sure 'QTextBlock' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
照着去搜索,找到了较为安全的修改用户界面的方式是向UI窗口发送信号signal
综合一下,代码如下
class MyThead(QtCore.QThread):
updated = QtCore.pyqtSignal(str)
def __init__(self, mainUI, msg):
super().__init__()
self.updated.connect(mainUI.plainTextEdit.appendPlainText)
self.msg = msg
def run(self):
self.updated.emit(self.msg)
class QPlainTextEditLogger(logging.Handler):
def __init__(self, mainUI):
super().__init__()
self.mainUI = mainUI
def emit(self, record):
msg = self.format(record)
_thread = MyThead(self.mainUI, msg)
_thread.start()
代码无法执行,窗口直接销毁,无任何报错
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论