Programación con PyQT4: Paso y modificación de valores entre formularios
Una forma que se me ha ocurrido (puede haber más y mejores), para pasar datos de un formulario es aprovechar que los objetos se pasan por referencia y no por valor, para usarlo para pasar datos.
Esquema:
En el esquema anterior, podemos ver dos formularios (A y B). El A le envía información al B, para que sea editada. El B se encargará reenviar la información una vez modificada por el usuario.
Para hacer esto posible, mediante el uso de "paso por referencia", hacemos lo siguiente:
1º Creamos una clase "Dato", que contiene varias propiedades con distintas variables.
class dato():
base="" #contendrá un texto
lista=[] #contendrá una lista
En el formulario A y B, crearemos una variable que sea de este tipo,
#en el Formulario A
valorFA=dato() #creamos una instancia de la clase dato()
#en el Formulario B
valorFB=dato() #creamos una instancia de la clase dato()
En el formulario A, igualamos a la variable del formularioB, la variable A (la estamos pasando por referencia)
#en el Formulario A
FormularioB.valorFB=valorFA
Llamamos al formulario de modo modal:
FormularioB.exec_()
Ahora se abre el formulario B, donde modificaremos los datos recibidos y cuando pulsemos el botón, de cerrar el formulario, antes, asignaremos los valores tomados a la variable valorFB
#en el formulario B
valorFB.base= ....
valorFB.lista = ....
self.close() #se cierra el formulario
Cuando cerremos el el formulario, como la variable valorFA se ha pasado por referencia, esta contiene las modificaciones que se hayan realizado en el formulario B, obteniendola modificada por ese formulario.
Ejemplo:
Consiste en dos formularios donde:
-> Formulario (A): tiene dos etiquetas, cuyo contenido vamos a modificar al abrir el otro formulario (B).
-> El otro formulario (de edición), contiene dos QtextEdit, que inicialmente toman los valores de las etiquetas del formulario inicial,y podemos modificar. Si pulsamos con el botón aceptar, se cierra y se modificaran los valores en el formulario (A), si le damos a cancelar se cierra pero no se modifican las etiquetas.
Consiste en dos formularios donde:
-> Formulario (A): tiene dos etiquetas, cuyo contenido vamos a modificar al abrir el otro formulario (B).
-> El otro formulario (de edición), contiene dos QtextEdit, que inicialmente toman los valores de las etiquetas del formulario inicial,y podemos modificar. Si pulsamos con el botón aceptar, se cierra y se modificaran los valores en el formulario (A), si le damos a cancelar se cierra pero no se modifican las etiquetas.
Enlace de descarga del ejemplo completo: enlace