pyqt qtextedit 获取内容
在使用 PyQt 开发界面时,QTextEdit 是一个非常常用的控件,它提供了一个多行文本编辑框,可以用来显示和编辑文本内容。在某些情况下,我们需要获取 QTextEdit 中的文本内容,例如需要保存用户编辑的内容或者进行特定的处理。本文将详细介绍如何在 PyQt 中使用 QTextEdit 控件获取内容。
1. 获取 QTextEdit 的文本内容
要获取 QTextEdit 的文本内容,我们可以使用 toPlainText() 方法。这个方法返回一个包含 QTextEdit 中文本内容的字符串。下面是一个简单的示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.text_edit = QTextEdit()
self.setCentralWidget(self.text_edit)
self.setWindowTitle('Get Text from QTextEdit')
self.setGeometry(100, 100, 600, 400)
def get_text(self):
text = self.text_edit.toPlainText()
print(text)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
# 输入一些文本到 QTextEdit 中
window.text_edit.setText('Welcome to geek-docs.com!')
# 获取 QTextEdit 的文本内容
window.get_text()
sys.exit(app.exec_())
在上面的代码中,我们创建了一个继承自 QMainWindow 的窗口类 MyMainWindow,并在窗口中添加一个 QTextEdit 控件。在 get_text() 方法中,我们使用 toPlainText() 方法获取 QTextEdit 中的文本内容,并打印输出。运行这段代码,输出应该是:
Welcome to geek-docs.com!
2. 获取选中的文本内容
除了获取整个 QTextEdit 的文本内容,有时候我们还需要获取用户选择的部分文本。QTextEdit 也提供了相应的方法来实现这个功能,我们可以使用 textCursor() 方法获取到光标位置,再使用 selectedText() 方法获取选中的文本内容。下面是一个示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.text_edit = QTextEdit()
self.setCentralWidget(self.text_edit)
self.setWindowTitle('Get Selected Text from QTextEdit')
self.setGeometry(100, 100, 600, 400)
def get_selected_text(self):
cursor = self.text_edit.textCursor()
selected_text = cursor.selectedText()
print(selected_text)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
# 输入一些文本到 QTextEdit 中
window.text_edit.setText('Welcome to geek-docs.com!')
# 选中一部分文本
cursor = window.text_edit.textCursor()
cursor.setPosition(11)
cursor.movePosition(cursor.Right, cursor.KeepAnchor, 5)
window.text_edit.setTextCursor(cursor)
# 获取选中的文本内容
window.get_selected_text()
sys.exit(app.exec_())
在上面的代码中,我们模拟了选中 QTextEdit 中的一部分文本。通过设置光标位置和 anchor 位置来实现选中文本的效果,然后使用 selectedText() 方法获取选中的文本内容。运行这段代码,输出应该是:
geek-
3. 获取指定行的文本内容
有时候我们需要获取 QTextEdit 中的指定行的文本内容,可以通过 QTextCursor 的相关方法实现。我们可以使用 movePosition() 方法将光标移动到指定行,再使用 movePosition() 方法将光标移动到行末,最后使用 selectedText() 方法获取行内容。下面是一个示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.text_edit = QTextEdit()
self.setCentralWidget(self.text_edit)
self.setWindowTitle('Get Text by Line from QTextEdit')
self.setGeometry(100, 100, 600, 400)
def get_line_text(self, line_num):
cursor = self.text_edit.textCursor()
cursor.movePosition(cursor.Start)
for _ in range(line_num):
cursor.movePosition(cursor.Down, cursor.KeepAnchor)
cursor.movePosition(cursor.EndOfLine, cursor.KeepAnchor)
line_text = cursor.selectedText()
print(line_text)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
# 输入一些文本到 QTextEdit 中
window.text_edit.setText('Python is a popular programming language.\nWelcome to geek-docs.com!\nThis is PyQt.')
# 获取第二行的文本内容
window.get_line_text(1)
sys.exit(app.exec_())
在上面的代码中,我们通过 movePosition() 方法将光标移动到指定行,并获取该行的文本内容。运行这段代码,输出应该是:
Welcome to geek-docs.com!
通过以上示例代码,我们可以看到在 PyQt 中如何使用 QTextEdit 控件获取文本内容。无论是获取整个文本内容、选中的文本内容还是指定行的文本内容,都可以通过 QTextEdit 和 QTextCursor 提供的方法轻松实现。