替换 textBrowser PyQt5 上的先前文本

Posted

技术标签:

【中文标题】替换 textBrowser PyQt5 上的先前文本【英文标题】:Replace previous text on textBrowser PyQt5 【发布时间】:2020-02-09 13:21:48 【问题描述】:
textBrowser.append("Type_01")

完美运行,但是,每当我再次运行该程序时,它都会添加一个新行而不是替换它。

【问题讨论】:

据我了解,您想要一个可以替换最后一行的功能,对吗? 检查textBrowser 的文档,也许它有clear(),您可以在append() 之前运行它。或 insert() 可以替换文本而不是附加。或者它有set_text() clear() 在追加之前效果很好。谢谢 【参考方案1】:

您可以选择最后一行,使用以下代码删除并添加新文本:

cursor = textBrowser.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.select(QtGui.QTextCursor.LineUnderCursor)
cursor.removeSelectedText()
cursor.insertText(text)

例子:

from PyQt5 import QtCore, QtGui, QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.textBrowser = QtWidgets.QTextBrowser()
        self.lineEdit = QtWidgets.QLineEdit()
        button = QtWidgets.QPushButton("Replace Last Line")
        self.textBrowser.append("Stack\nOverflow\nHello\nWorld")
        button.clicked.connect(self.on_clicked)
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(self.textBrowser)
        lay.addWidget(self.lineEdit)
        lay.addWidget(button)

    @QtCore.pyqtSlot()
    def on_clicked(self):
        text = self.lineEdit.text()
        if text:
            self.replace_last_line(text)

    def replace_last_line(self, text):
        cursor = self.textBrowser.textCursor()
        cursor.movePosition(QtGui.QTextCursor.End)
        cursor.select(QtGui.QTextCursor.LineUnderCursor)
        cursor.removeSelectedText()
        cursor.insertText(text)


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

【讨论】:

我用过这个,但不幸的是,它不起作用。我在附加之前使用了 textbowser.clear() 并且它有效。谢谢 @AkashKumar mmm,您的描述不清楚,如果您使用clear() + append(),那么您想替换所有在这种情况下最好使用setText() 或@ 的文本987654326@,在我的代码中,只需替换我在您的问题下方的评论中提出的最后一行

以上是关于替换 textBrowser PyQt5 上的先前文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在从串口python pyqt接收的textbrowser pyqt5上附加串行数据[重复]

Python PyQt5 中QtextBrowser打印程序log,只输出一次不知道原因

字典迭代中的 PyQt5 文本颜色

使用pycharm+pyqt5 调取界面程序

Python - pyqt5 - 清除 QTextBrowser 的选择

[ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法