PyQt学习随笔:QTextEdit和QTextBrowser删除光标所在行内容的方法

在使用QTextBrowser用于记录输出日志,并接管了标准输出后,对于某些Python模块输出的反映处理进度的提示内容,在pycharm中显示为一行,但在自己的日志文件中显示为N多行。为此分析了一下这些特殊的日志信息,发现是使用’\r’为开头的字符串,即输出不换行但回到行首。为此要做QTextEdit和QTextBrowser实现类似的效果,可以通过对行首的’\r’字符采用删除当前行的方式进行处理。

参考代码如下:

        if info.startswith('\r'):
            lastLine = self.hisInfo.textCursor()
            lastLine.select(QtGui.QTextCursor.LineUnderCursor)
            lastLine.removeSelectedText()
            self.hisInfo.moveCursor(QtGui.QTextCursor.StartOfLine, QtGui.QTextCursor.MoveAnchor)
            infoTmp = info.strip("\r")
            if self.loadWin.isLogTime:
                self.hisInfo.insertPlainText(time.strftime("%Y%m%d%H%M%S", time.localtime())+": "+infoTmp)
            else:self.hisInfo.insertPlainText(infoTmp)

上述代码中,self.hisInfo为记录输出日志的QTextEdit或QTextBrowser对象,info为截获的输出信息(关于怎么截获标准输出可以参考《PyQt(Python+Qt)学习随笔:print标准输出sys.stdout以及stderr重定向QTextBrowser等图形界面对象》)。

跟老猿学Python、学5G!

posted @ 2020-05-13 22:32  老猿学Python  阅读(1496)  评论(0编辑  收藏  举报