📅  最后修改于: 2023-12-03 15:18:46.435000             🧑  作者: Mango
在使用 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_())
以上就是 PyQt 突出显示所有出现的选定单词的简单实现。希望对使用 PyQt 进行程序开发有所帮助。