📜  pyqt 突出显示所有出现的选定单词 qt - Python (1)

📅  最后修改于: 2023-12-03 15:18:46.435000             🧑  作者: Mango

PyQt 突出显示所有出现的选定单词

在使用 Python 及 Qt 编写程序时,经常需要在代码编辑器中进行代码标记,例如要找到所有出现的选定单词,以便进行进一步的编辑。

使用 PyQt 可以很容易地实现这一目的。以下是一个简单的 PyQt 应用程序,它将在文本框中的所有出现的选定单词突出显示:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.text_edit = QTextEdit()
        self.setCentralWidget(self.text_edit)

        # 创建动作并将其添加到工具栏上
        self.highlight_action = QAction('突出显示单词', self)
        self.highlight_action.setShortcut('Ctrl+H')
        self.highlight_action.triggered.connect(self.highlight_words)
        self.toolbar = self.addToolBar('工具栏')
        self.toolbar.addAction(self.highlight_action)

        self.show()

    def highlight_words(self):
        """
        高亮文本编辑器中出现的选定单词
        """
        # 获取选中的单词
        cursor = self.text_edit.textCursor()
        word = cursor.selectedText()

        # 移动游标到文本起点
        cursor.setPosition(0)

        # 在整个文本中查找单词并进行高亮标记
        while True:
            # 查找单词
            cursor = self.text_edit.document().find(word, cursor)

            # 没有找到单词则退出
            if cursor.isNull():
                break

            # 设置单词的选中样式
            cursor.select(Qt.WordUnderCursor)
            cursor.mergeCharFormat(self.format)

    @property
    def format(self):
        """
        返回突出显示文本所使用的格式
        """
        fmt = self.text_edit.currentCharFormat()
        fmt.setBackground(Qt.yellow)
        return fmt

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec_())
程序说明
  • 程序首先创建了一个继承自 QMainWindow 的主窗口。其中包含一个 QTextEdit 对象作为主窗口内的中央窗口部件。
  • 快捷键 Ctrl+H 将触发突出显示单词的动作,并将其绑定到工具栏的按钮上。
  • 点击工具栏按钮后,程序将查找文本编辑器中当前选中的单词,并使用黄色背景颜色将所有匹配项进行突出显示。
程序运行效果

程序运行效果

以上就是 PyQt 突出显示所有出现的选定单词的简单实现。希望对使用 PyQt 进行程序开发有所帮助。