Foros Python
PyQt5, llamar a QLineEdit desde un string - Versión para impresión

+- Foros Python (https://foro.recursospython.com)
+-- Foro: Desarrollo (https://foro.recursospython.com/forumdisplay.php?fid=1)
+--- Foro: Aplicaciones de escritorio (https://foro.recursospython.com/forumdisplay.php?fid=4)
+--- Tema: PyQt5, llamar a QLineEdit desde un string (/showthread.php?tid=753)



PyQt5, llamar a QLineEdit desde un string - Kali - 01-09-2020

Hola a todos,
Llevo meses dándole a Python y uso PyQt5 desde Qt Designer para visualizar datos de un Microsoft Server.

Lo que me está costando es poder acceder a objetos tipo QLineEdit en base a un string.

Es decir, tengo un Objeto (creado en Qt Designer) llamados linea_1, linea_2, linea_3, etc y quiero escribir dentro valores  tipo Hola_1, Hola_2, Hola_3, etc, pero NO PUEDO Angry Angry 

y por eso estoy haciendo un código largo de narices:

kk= "Hola" + n
if n==1:
       self.linea_1.setText(str(kk))
elif n==2:
       self.linea_2.setText(str(kk))
elif n==3:
       self.linea_3.setText(str(kk))

............

No hay ninguna forma de usando algo tipo "linea_"+n, hacer:
kk= "Hola" + n
self.("linea_"+n).setText(str(kk))

THNKS


RE: PyQt5, llamar a QLineEdit desde un string - Francisco - 01-09-2020

Hola, bienvenido.

Eso que estás intentando se podría hacer así (suponiendo que tenés objetos del 1 al 3):

  1. for n in range(1, 4):
  2. getattr(self, f"linea_{n}").setText(str(n))


Sobre getattr(): https://micro.recursospython.com/recursos/la-funcion-getattr.html.

Si creaste la ventana con Qt Designer, capaz una mejor opción sería usar la función de Qt findChildren() para buscar los controles (a partir del prefijo o de la clase) y luego cambiarles el texto.

Saludos!


RE: PyQt5, llamar a QLineEdit desde un string - Kali - 03-09-2020

Muchas gracias Francisco