描述:我编写了一个自定义日志处理程序,用于捕获日志事件并将它们写入QTextBrowser对象(如下所示,示例代码示例).
问题:按下按钮调用someProcess().这会将两个字符串写入logger对象.但是,字符串仅在someProcess()返回后出现.
问题:如何立即/实时地将记录的字符串显示在QTextBrowser对象中?(即一旦logger调用输出方法)
from PyQt4 import QtCore, QtGui
import sys
import time
import logging
logger = logging.getLogger(__name__)
class ConsoleWindowLogHandler(logging.Handler):
def __init__(self, textBox):
super(ConsoleWindowLogHandler, self).__init__()
self.textBox = textBox
def emit(self, logRecord):
self.textBox.append(str(logRecord.getMessage()))
def someProcess():
logger.error("line1")
time.sleep(5)
logger.error("line2")
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
textBox = QtGui.QTextBrowser()
button = QtGui.QPushButton()
button.clicked.connect(someProcess)
vertLayout = QtGui.QVBoxLayout()
vertLayout.addWidget(textBox)
vertLayout.addWidget(button)
window.setLayout(vertLayout)
window.show()
consoleHandler = ConsoleWindowLogHandler(textBox)
logger.addHandler(consoleHandler)
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
编辑:感谢@abarnert的回答,我设法使用QThread编写了这段工作代码.我QThread为了 …