diff --git a/README.md b/README.md index d7c60ec..c4df4b9 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ [腾讯视频热播列表](腾讯视频热播列表/) [ QWebView 与 python 通过js交互 特效 - 已失效 未更新](https://github.com/892768447/PhotoEffects) + ### II、功能型 #### 2.1 常用例子 @@ -28,7 +29,7 @@ - python 的exec( ) 动态生成控件 - [1. 动态控件基础例子 - 动态生成按钮](partner_625781186/exec动态生成控件/dynamic_button) - [2. 动态控件基础例子 - 动态生成菜单](partner_625781186/exec动态生成控件/dynamic_Menu) - - [3.配合setting记录模型类型](partner_625781186/exec动态生成控件/) + - [3. 配合setting记录模型类型](partner_625781186/exec动态生成控件/) - 小部件 - [ ☆! QSplitter 分割条重写 来添加按钮](分割窗口的分割条重写/) @@ -40,6 +41,7 @@ - [ 右下角弹出框](右下角弹出框/) - [ 消息对话框倒计时关闭](消息对话框倒计时关闭/) + - [QTextEdit 文本高亮](文本高亮/) - win 32 - [ 嵌入外部窗口](嵌入外部窗口/) - [ 探测窗口和 放大镜](探测窗口和放大截图/) @@ -51,6 +53,7 @@ - [ QListView 加按钮和 排序](QListView/) - [ Json生成QTreeWidget](Json生成QTreeWidget/) + - [ treeWidget 节点可拖拽](https://github.com/AshotS/glowing-disco) - [ QSqlTableModel + QTableView 数据库查询显示表格](数据库查询显示表格/) diff --git a/文本高亮/README.md b/文本高亮/README.md new file mode 100644 index 0000000..40de0e1 --- /dev/null +++ b/文本高亮/README.md @@ -0,0 +1,4 @@ +# QTextEdit mergeCurrentCharFormat函数 + + +![1](ScreenShot/1.gif) \ No newline at end of file diff --git a/文本高亮/ScreenShot/1.gif b/文本高亮/ScreenShot/1.gif new file mode 100644 index 0000000..340287f Binary files /dev/null and b/文本高亮/ScreenShot/1.gif differ diff --git a/文本高亮/简单查找文字并高亮.py b/文本高亮/简单查找文字并高亮.py new file mode 100644 index 0000000..75d1bc9 --- /dev/null +++ b/文本高亮/简单查找文字并高亮.py @@ -0,0 +1,57 @@ +import sys +from PyQt5.QtGui import QTextCharFormat,QTextDocument, QTextCursor +from PyQt5.QtWidgets import (QApplication, QMainWindow, QTextEdit, + QToolBar, QLineEdit, QPushButton, QColorDialog, QHBoxLayout, QWidget) + +class TextEdit(QMainWindow): + def __init__(self, parent=None): + super(TextEdit, self).__init__(parent) + self.textEdit = QTextEdit(self) + self.setCentralWidget(self.textEdit) + + widget = QWidget(self) + vb = QHBoxLayout(widget) + vb.setContentsMargins(0, 0, 0, 0) + self.findText = QLineEdit(self) + self.findText.setText('self') + findBtn = QPushButton('高亮',self) + findBtn.clicked.connect(self.highlight) + vb.addWidget(self.findText) + vb.addWidget(findBtn) + + tb = QToolBar(self) + tb.addWidget(widget) + + def setText(self,text): + self.textEdit.setPlainText(text) + + def mergeFormatOnWordOrSelection(self, format): + cursor = self.textEdit.textCursor() + if not cursor.hasSelection(): + cursor.select(QTextCursor.WordUnderCursor) + cursor.mergeCharFormat(format) + self.textEdit.mergeCurrentCharFormat(format) + + def highlight(self): + text = self.findText.text()#输入框中的文字 + if not text: + return + col = QColorDialog.getColor(self.textEdit.textColor(), self) + if not col.isValid(): + return + fmt = QTextCharFormat() + fmt.setForeground(col) + #先把光标移动到开头 + self.textEdit.moveCursor(QTextCursor.Start) + while self.textEdit.find(text,QTextDocument.FindWholeWords):#查找所有文字 + self.mergeFormatOnWordOrSelection(fmt) + +if __name__ == '__main__': + app = QApplication(sys.argv) + + textEdit = TextEdit() + textEdit.resize(800, 600) + textEdit.show() + textEdit.setText(open(sys.argv[0],'rb').read().decode()) + + sys.exit(app.exec_()) \ No newline at end of file