[Python-es] Buscar texto en QTextEdit (PyQt)

Chema Cortes pych3m4 en gmail.com
Vie Ago 2 12:45:33 CEST 2013


El día 2 de agosto de 2013 11:53, kausdiv <kausdiv en gmail.com> escribió:
> Gracias Chema por contestar.
>
> Verás, yo pongo el cursor al principio del texto manualmente, es decir con
> el ratón.
> el procedimiento de búsqueda que uso es este:
> ----------------------------------------
> # "txBusca" es un campo QlineEdit y "texto" el QTextEdit donde busco.
>
> def buscar(self):
>         t = QtGui.QString(self.txBusca.text())
>         # QtGui.QMessageBox.about(self, 'busca', t)
>         if self.texto.find(self, t, 0):
>             QtGui.QMessageBox.about(self, "Encontrado", str(t))

La API es algo confusa. Por regla general, si ves un argumento 'self'
debes interpretarlo como llamada a un método de la instancia. Por otro
lado, el método QLineEdit.text devuelve una QString por lo que no
precisa que la conviertas:

def buscar(self):
        text = self.txBusca.text()
        # QtGui.QMessageBox.about(self, 'busca', t)
        if self.texto.find(text, 0):
            QtGui.QMessageBox.about(self, "Encontrado", text)

En la última línea, en este caso sí que se pasa a QMessageBox.about
'self' para que actúe como "parent" del diálogo.


> ...............................................
>
> No se si lo estoy haciendo mal.
>
> Saludos.
>
> El 01/08/2013 3:39, Chema Cortes escribió:
>
>> Si hubieras puesto algo del código que no te funciona se podría
>> averiguar qué es lo que pasa. Saber qué versión de Qt, PyQt y python
>> también ayudaría.
>>
>> QTextEdit posee un cursor QTextCursor que debería encargarse del
>> posicionamiento y resaltado del texto. El problema es que el método
>> .find() siempre busca adelante, por defecto, a partir de la posición
>> actual del cursor. Previsiblemente, QTextEdit estará apuntando al
>> final del texto que estabas introduciendo.
>>
>> Solución tonta: antes de buscar posiciona el cursor de edición al
>> inicio del QTextEdit.
>> Solución buena: mírate la documentación de los métodos
>> QTextEdit.textCursor , QTextEdit.setTextCursor,
>> QTextCursor.setPosition,....
>>
>> El día 31 de julio de 2013 17:37, kausdiv <kausdiv en gmail.com> escribió:
>>>
>>> Hola de nuevo.
>>>
>>> Estoy tratando de hacer  un procedimiento que busque un texto dentro de
>>> un
>>> QTextEdit. El texto a buscar se introduce en QLineEdit.
>>>
>>> Lo que pretendo es que busque y posicione el cursor en el texto
>>> encontrado.
>>>
>>> He probado con "find" pero no consigo nada y lo que he encontrado en
>>> google
>>> no me ha servido de mucho.
>>>
>>> ¿ Alguien tiene un ejemplo en el que basarme ?
>>>
>>> Gracias de antemano.
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> http://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/



-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es


Más información sobre la lista de distribución Python-es