Recorrer líneas de texto en un QTextEdit (Python+QtDesigner/Pyside)

Iniciado por curiosport, 22 Febrero 2016, 14:27 PM

0 Miembros y 1 Visitante están viendo este tema.

curiosport

Hola, desde hace un tiempo he querido hacer un programa para renombrar texto (personal puesto que a nadie le va a servir).

El objetivo es que en un QTextEdit ingrese por ejemplo 30 líneas y pueda ir recorriendo línea por línea para renombrarlo y se imprima en otro QTextEdit, hasta ahora lo único que he logrado es que solo renombre la primera línea mientras que el resto queda intacto.

Y algo opcional es que también me gustaría saber como puedo contar la cantidad de líneas que he ingresado en el QTextEdit aunque esto es bastante opcional.


Eleкtro

#2
Cita de: curiosport en 25 Febrero 2016, 18:18 PM@Eleкtro
Eleкtro Ayúdame please.

Yo no programo bajo QT ni implementaciones derivadas, lo siento.

De todas formas... te muestro un pseudo-código basado en la intuición tras haber leido los miembros de la documentación de QT:


Código (python) [Seleccionar]
lines = Input_QTextEdit.plainText.split('\n')
count = len(lines)

Output_QTextEdit.setPlainText('')

for line in lines:
  renamed = DoRename(line)
  Output_QTextEdit.plainText.append(renamed)


Saludos.








curiosport

#3
Cita de: Eleкtro en 25 Febrero 2016, 19:31 PM
Yo no programo bajo QT ni implementaciones derivadas, lo siento.

De todas formas... te muestro un pseudo-código basado en la intuición tras haber leido los miembros de la documentación de QT:

¿Sabes? esta misma pregunta puse en varias páginas, incluso en stackoverflow, y en algunos casos como stackoverflow hasta expuse mi problema con imágenes y no pudieron ayudarme pero tú, sin siquiera saber algo de QT y con información incompleta, lograste ayudarme, en serio viejo ya lo logré, AL FIN lo logré, muchas pero muchas gracias.

Dejaré acá el código que me sirvió ya que en mi investigación me he dado cuenta de que no soy el único interesado en recorrer línea por línea dentro de un QTextEdit.

QtCore.QObject.connect(self.ui.ButtonRenombrar,QtCore.SIGNAL('clicked()'), self.RInteligente)
def RInteligente(self):
   def doRename(huis1,huis):
       huis2=huis1[0:huis1.index(" ")].replace(".","_")
       return "%s%s.flv"%(huis,huis2)
   def rename():
       huis=self.ui.lineModelo.text()
       ##Aquí agregamos todo el texto dentro de una lista, separando línea por línea usando la función split()
       lines=str(self.ui.tOriginal.toPlainText()).split('\n')
       ##Una vez que esté en una lista ya podemos usar un bucle for.
       for huis1 in lines:
       ##Y aquí podremos manipular línea por línea a nuestro antojo, en mi caso he enviado la variable huis1 a una función llamada doRename().
           renamed=doRename(huis1,huis)
       ##El texto editado lo agregamos a otro objeto que deseemos usando append() y no setText() porque la información no se imprimirá correctamente.
           self.ui.tRenombrado.append(renamed)
   rename()