pyqt qtextedit 获取内容

pyqt qtextedit 获取内容

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 提供的方法轻松实现。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程