entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

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 objet QTextEdit llamado tOriginal ingrese por ejemplo 30 líneas y pueda ir recorriendo línea por línea para renombrarlo y se imprima en otro QTextEdit llamado tRenombrado, 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 tOriginal aunque esto es bastante opcional.

Gracias.

1voto

carlossevi comentado

Dices que "hasta ahora lo único que he logrado es que solo renombre la primera línea mientras que el resto queda intacto" ¿Nos pones el código para que podamos ayudarte?

0voto

Jade comentado

def __init__(self, parent=None):
    super(ControlMainWindow,self).__init__(parent)
    self.ui=Ui_MainWindow()
    self.ui.setupUi(self)             
    QtCore.QObject.connect(self.ui.ButtonRenombrar,QtCore.SIGNAL('clicked()'), self.RInteligente)

def RInteligente(self):
    def rename():
        huis=self.ui.lineModelo.text()
        huis1=self.ui.tOriginal.toPlainText()
        huis2=huis1[0:huis1.index(" ")].replace(".", "_")
        return "%s%s.flv"%(huis,huis2)
    self.ui.tRenombrado.setText(rename())

Adjunto una imagen para que te des una idea de como debe funcionar:
QtDesigner

1 Respuesta

1voto

Jade Puntos800

Me autorespondo, es increíble, pero la persona que me ayudó ni siquiera sabía programar en QT y esa persona es de otra web.

Dejaré acá el código para quien pueda interesar 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()

0voto

Peter comentado

Gracias por compartir la solución, por favor selecciona la respuesta como correcta.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta