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!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM