文章目录
- QTextEdit
- 更新和获取内容
- 隐藏或显示滚动条
- 光标插入文本
- 文本自适应移动
QTextEdit
更新和获取内容
更新:QTextEdit().setText(text)
或 QTextEdit().setPlainText(text)
获取:QTextEdit().toPlainText()
setText()
和setPlainText()
的区别:
setText()
方法可以接受HTML格式的文本,并且会解析并显示HTML标签。这意味着可以在QTextEdit中使用富文本格式,例如加粗,斜体,字体颜色等。示例代码如下:
text_edit.setText("<b>Bold Text</b>")
上述代码将在QTextEdit中显示为粗体文本。
setPlainText()
方法仅接受纯文本,它不会解析或显示HTML标签。这意味着所有的HTML标签都会被当做纯文本显示。示例代码如下:
text_edit.setPlainText("<b>Bold Text</b>")
上述代码将在QTextEdit中直接显示<b>Bold Text</b>
的纯文本。
更新和获取内容示例代码:
from PyQt5.QtWidgets import *
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
# 窗口设置
self.resize(300, 300)
self.setup_ui()
def setup_ui(self):
textEdit = QTextEdit(self)
textEdit.resize(100, 100)
textEdit.setText('12345')
button1 = QPushButton('更新', self)
button1.move(50, 150)
button1.clicked.connect(lambda: textEdit.setText('更新内容'))
button2 = QPushButton('获取', self)
button2.move(50, 200)
button2.clicked.connect(lambda: print(textEdit.toPlainText()))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
运行结果:
隐藏或显示滚动条
要隐藏或显示QTextEdit的垂直和水平滚动条,可以使用setVerticalScrollBarPolicy()
和setHorizontalScrollBarPolicy()
方法。
以下是示例代码:
隐藏垂直滚动条:
from PyQt.QtCore import Qt
textEdit.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
显示垂直滚动条:
from PyQt.QtCore import Qt
textEdit.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
隐藏水平滚动条:
from PyQt.QtCore import Qt
textEdit.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
显示水平滚动条:
from PyQt.QtCore import Qt
textEdit.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
光标插入文本
from PyQt5.QtWidgets import *
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QTextCharFormat, QFont
class Window(QMainWindow):
def __init__(self):
super().__init__()
# 窗口设置
self.resize(300, 300)
self.setup_ui()
def setup_ui(self):
self.textEdit = QTextEdit(self)
self.textEdit.resize(100, 100)
self.cursor = self.textEdit.textCursor() # 获取光标
button1 = QPushButton('插入', self)
button1.move(50, 150)
button1.clicked.connect(self.insertNewText)
# 光标位置插入内容
def insertNewText(self):
format = QTextCharFormat() # 实现局部文本格式特征的设置
format.setForeground(Qt.red) # 设置字体颜色
format.setFont(QFont('宋体', 12))
self.cursor.insertText('1\n', format)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
运行结果:
文本自适应移动
文本自适应移动,即在每次插入内容后,显示光标所在的位置即可。
QTextEdit().ensureCursorVisible()
以以上代码为例
# 光标位置插入内容
def insertNewText(self):
format = QTextCharFormat() # 实现局部文本格式特征的设置
format.setForeground(Qt.red) # 设置字体颜色
format.setFont(QFont('宋体', 12))
self.cursor.insertText('1\n', format)
self.textEdit.ensureCursorVisible() # 文本自适应移动
运行结果:
观察“光标插入文本”的运行结果中文本框的滚动条和本次运行结果中的滚动条: