我目前正在使用qt designer进行GUI.我想知道如何在GUI上打印字符串,就像记录器窗口一样.我正在使用pyqt5.
我是pyqt的新手 - 我正在使用它来制作图形的可视化表示.我为此制作了一个自定义小部件,这非常简单.但是现在我不得不使用内置功能.
我想在我的应用程序中添加一个"视图"并能够向其打印文本(有点像用print打印到控制台时会发生什么("blablabla"))
我尝试使用pyqt api来发现什么/如何但是......
http://pyqt.sourceforge.net/Docs/PyQt4/qtgui.html
它包含41个类型的文本+其他东西,并且公平地说我不知道使用哪一个?
所以,如果有人可以指出我哪一个,如果你有时间如何使用它为我想要的目的,那将非常感激^^
描述:我编写了一个自定义日志处理程序,用于捕获日志事件并将它们写入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为了 …