Continuando con la construcción de mi notepad he construido un widget para que haga la busqueda activa de las palabras en el documento encontre que para los QPlainTextEdit hay una propiedad llamada find() que para ello hace la busqueda para que se resalte la palabra y la siguiente. cuando hago esto al buscar la palabra aparece el resalgo en gris por el desenfoque, alguien sabe como hacer que el azul permanezca durante la busqueda.
Nota: Cuando se cierra el QDialog() automaticamente pasa a hacer color azul por el enfoque
Mi otra pregunta es alguien sabe lo que hace Wrap around?, cual es la función de este,Mi otra pregunta es como hago para que cuando active la opción match case sea case sentivie como hago para colocar esa configuración en la busqueda .find()
si alguien necesit el codigo lo dejo aqui:
[![#Función find en la aplicación principal][1]][1] def find_in_document(self):""" Code to find the words :return:""" self.find_window = QDialog() self.find_ui = Find_UI_Form() self.find_ui.setupUi(self.find_window) self.find_ui.general_plain_text = self.current_plain_text_widget self.find_window.exec_() # To convert a modal window# Modulo Find_UI_Form# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'find_replace_widget.ui'## Created by: PyQt5 UI code generator 5.15.10## WARNING: Any manual changes made to this file will be lost when pyuic5 is# run again. Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtGui import QIconfrom PyQt5.QtWidgets import QMenu, QAction, QPlainTextEditimport sysclass Find_UI_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(603, 100) Form.setMinimumSize(QtCore.QSize(603, 100)) Form.setMaximumSize(QtCore.QSize(603, 100)) Form.setSizeIncrement(QtCore.QSize(0, 0)) Form.setWindowIcon(QIcon("Icons/Main_logo.png")) self.general_plain_text : QPlainTextEdit = QPlainTextEdit() self.start_to_explore = True self.verticalLayout_2 = QtWidgets.QVBoxLayout(Form) self.verticalLayout_2.setObjectName("verticalLayout_2") self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setMaximumSize(QtCore.QSize(50, 16777215)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("Icons/replace.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pushButton.setIcon(icon) self.pushButton.setCheckable(True) self.pushButton.setFlat(True) self.pushButton.setObjectName("pushButton") self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1) self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setMinimumSize(QtCore.QSize(230, 33)) self.lineEdit.setFrame(True) self.lineEdit.setDragEnabled(True) self.lineEdit.setReadOnly(False) self.lineEdit.setClearButtonEnabled(True) self.lineEdit.setObjectName("lineEdit") self.lineEdit.setFocus(True) self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1) self.lineEdit_2 = QtWidgets.QLineEdit(Form) self.lineEdit_2.setMinimumSize(QtCore.QSize(230, 33)) self.lineEdit_2.setClearButtonEnabled(True) self.lineEdit_2.setObjectName("lineEdit_2") self.lineEdit_2.hide() self.gridLayout.addWidget(self.lineEdit_2, 1, 1, 1, 1) self.ReplaceButton = QtWidgets.QPushButton(Form) self.ReplaceButton.setObjectName("ReplaceButton") self.ReplaceButton.hide() self.gridLayout.addWidget(self.ReplaceButton, 1, 3, 1, 1) self.pushButton_2 = QtWidgets.QPushButton(Form) self.pushButton_2.setCheckable(False) self.pushButton_2.setObjectName("pushButton_2") self.gridLayout.addWidget(self.pushButton_2, 0, 3, 1, 1) self.pushButton_3 = QtWidgets.QPushButton(Form) self.pushButton_3.setCheckable(False) self.pushButton_3.setObjectName("pushButton_3") self.gridLayout.addWidget(self.pushButton_3, 0, 4, 1, 1) self.ReplaceAllButton = QtWidgets.QPushButton(Form) self.ReplaceAllButton.setObjectName("ReplaceAllButton") self.ReplaceAllButton.hide() self.gridLayout.addWidget(self.ReplaceAllButton, 1, 4, 1, 1) self.pushButton_6 = QtWidgets.QPushButton(Form) self.pushButton_6.setText("") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("Icons/search.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pushButton_6.setIcon(icon1) self.pushButton_6.setAutoDefault(False) self.pushButton_6.setDefault(True) self.pushButton_6.setFlat(True) self.pushButton_6.setObjectName("pushButton_6") self.gridLayout.addWidget(self.pushButton_6, 0, 2, 1, 1) self.toolButton = QtWidgets.QToolButton(Form) self.toolButton.setMinimumSize(35,35) self.pop_menu = QMenu() self.action_math_case = QAction("Match case") self.action_math_case.setCheckable(True) self.action_math_case.setChecked(True) self.action_wrap_raound = QAction("Wrap Around") self.action_wrap_raound.setCheckable(True) self.action_wrap_raound.setChecked(True) self.toolButton.addAction(self.action_math_case) self.toolButton.addAction(self.action_wrap_raound) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap("Icons/filter.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.toolButton.setIcon(icon2) self.toolButton.setPopupMode(QtWidgets.QToolButton.ToolButtonPopupMode.InstantPopup) self.toolButton.setObjectName("toolButton") self.gridLayout.addWidget(self.toolButton, 0, 5, 1, 1) self.verticalLayout_2.addLayout(self.gridLayout) self.retranslateUi(Form) self.lineEdit.returnPressed.connect(self.pushButton_6.click) # type: ignore self.pushButton_6.clicked.connect(self.push_button_6_clicked) self.pushButton.toggled['bool'].connect(self.lineEdit_2.setVisible) # type: ignore self.pushButton.toggled['bool'].connect(self.ReplaceButton.setVisible) # type: ignore self.pushButton.toggled['bool'].connect(self.ReplaceAllButton.setVisible) # type: ignore QtCore.QMetaObject.connectSlotsByName(Form) def push_button_6_clicked(self):""" The function take the word to find :return:""" self.find_and_find_next() @property def plain_text_to_explore(self) -> QPlainTextEdit:""" :return:""" return self.general_plain_text @plain_text_to_explore.setter def plain_text_to_explore(self, plain_text: QPlainTextEdit): self.plain_text_to_explore = plain_text def find_and_find_next(self): text = self.lineEdit.text() def cursor_initializator(position = 0): cursor = self.general_plain_text.textCursor() cursor.setPosition(position) self.general_plain_text.setTextCursor(cursor) if self.start_to_explore: cursor_initializator() self.start_to_explore = False position = self.general_plain_text.textCursor().position() if not self.general_plain_text.find(text): cursor_initializator() if not self.general_plain_text.find(text): cursor_initializator(position) self.start_to_explore = True def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Find Characters")) self.pushButton.setToolTip(_translate("Form", "Replace Tool")) self.pushButton.setText(_translate("Form", "&")) self.lineEdit.setPlaceholderText(_translate("Form", "Find...")) self.lineEdit_2.setPlaceholderText(_translate("Form", "Replace...")) self.ReplaceButton.setText(_translate("Form", "Replace")) self.pushButton_2.setToolTip(_translate("Form", "Find Next")) self.pushButton_2.setText(_translate("Form", "↓")) self.pushButton_3.setToolTip(_translate("Form", "Find Previous")) self.pushButton_3.setText(_translate("Form", "↑")) self.ReplaceAllButton.setText(_translate("Form", "Replace all")) self.pushButton_6.setToolTip(_translate("Form", "Search")) self.toolButton.setText(_translate("Form", "..."))if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Find_UI_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())