替换 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,只输出一次不知道原因