Static Variables PyQt

164 views
Skip to first unread message

Victor Villalobos

unread,
Sep 24, 2013, 9:46:19 PM9/24/13
to python-v...@googlegroups.com
Buenas el caso es que estoy desarrollando un pequeño sistema administrativo 
en python + qt, el problema viene dado por esto:

Tengo una class "MainWindow.py"  este lo tengo trabajando como Mdi, por lo 
que tengo dentro un MDI AREA, y activo el resto de las 
ventanas(Clientes,Facturacion,Presupuesto) administrativos añadiendo las 
ventanas al mdi area asi:

@pyqtSlot()
   def on_btnClientes_clicked(self):
      wClientes = VClientes()
      self.mdiArea.addSubWindow(wClientes)
      wClientes.show()

Donde VClientes es la class de la ventana de administracion de clientes. Aqui 
viene el problema, yo quiero que desde la class VClientes leer o escribir en 
los QLineEdit de VFactura(Ventana de facturacionl), la estructura seria asi:

Nombre Class
VMainWindow.
VFactura
VClientes. 

EL caso seria por ejemplo que en caso del el cliente no existir, se abre la 
ventana de insersion de clientes, usando el codigo arriba escrito, pero que al 
momoento de que VCLientes cumpla su funcion ademas modifique los lineEdit 
que estan en Vfactura(Que es la class que llamo a VClientes).

En java usaria variables Static y podria modificar las propiedades de la 
class principal desde una clase child, pero aca en python ni idea como 
hacerlo.

Este es la primera cosa en python que no he logrado, en mi proceso de 
aprendizaje.


Saludos, espero me puedan ayudar si tienen alguna duda con respecto a la 
descripción de mi pregunta por favor notificar

Jesús Gómez

unread,
Sep 24, 2013, 10:20:18 PM9/24/13
to python-venezuela
Se supone que una variable de clase es como una variable estática.

class UnaClase(object):

    una_variable_estatica = 5

Ya.



--
Este es un mensaje del foro Python de Venezuela - http://www.python.org.ve
Para suscripciones y retiros: http://goo.gl/ug9by
---
Has recibido este mensaje porque estás suscrito al grupo "Python Venezuela" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a python-venezue...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Roberto Perdomo

unread,
Sep 24, 2013, 11:11:11 PM9/24/13
to python-v...@googlegroups.com
Las variables estáticas por definición son aquellas que son pertenecientes a una clase y se extiende a instancias y su acceso es de manera global.

Así, una variable estática en Python son aquellas declaradas en una clase, pero no aquellas definidas dentro de los métodos.

Un ejemplo:

class tu_clase():
    variable_estatica = "Valor"

#Creas la instancia
objeto = tu_clase()
objeto.variable_estatica = "Nuevo Valor"
otro_objeto = tu_clase()
otro_objeto.variable_estatica = "Otro Valor"
#variable estática o global de una clase
print tu_clase.variable_estatica
#variable de instancia, no es global
print objeto.variable_estatica
#variable de instancia del otro objeto, no es global
print otro_objeto.variable_estatica
#La variable estática de la clase mantiene su valor
print tu_clase.variable_estatica

Saludos!

Victor Villalobos

unread,
Sep 25, 2013, 10:07:19 AM9/25/13
to python-v...@googlegroups.com
Si eso lo se, mi problema viene dado en por ejempo PyQt, como ya mencione tengo dos ventanas estructuradas así:

VFacturacion
   VClientes

en la primera Ventana cuando no existe el cliente esta llama al modulo de ingreso de cientes y lo añade a un mdiArea con el metodo mdiarea.addSubWindow(Ventana), ahora desde la ventana "Facturacion" puedo acceder facilmente a "Clientes" porque esta es la que instancio primeramente clientes, pero desde Clientes no puedo ver la classe "Facturacion" porque esta es child aca y esta no contiene ningun import de Facturacion y tampoco podria ponerlo como ya saben.

Se que debe ser una tonteria pero no he dado con la respuesta. Intente poniendo un getter que me pasara los valores de todos los QLineEdit de la Class "Clientes" para llenar correctamente el formulario de "VFacturacion", pero no sabria en que momento debo ejecutar el guetter porque tengo que esperar hasta que todos los lines esten llenos y asi continua mi dilema con PyQt.  Y los QlineEdit no puedo volverlos estaticos no que yo sepa. 

Saludos gracias por las respuestas, sigo esperando espero me entiendan.

Wil Alvarez

unread,
Sep 25, 2013, 10:18:17 AM9/25/13
to python-v...@googlegroups.com
Hola Victor,

Sinceramente desaconsejo usar esos "setters" y "getters" para lo que quieres hacer. ¿Por qué no le das un vistazo a las señales de PyQt [1]? Eso te permite trabajar en cualquier instancia y disparar señales para los eventos que creas conveniente con los argumentos que necesites. Luego, del otro lado, te conectas a la señal correspondiente y procesas lo que debas procesar.

No tengo mucho detalle de tu aplicación pero se me ocurre que en el formulario de clientes puedes disparar una señal luego que el usuario finalice el llenado pasando como argumentos todos los QLineEdit y en facturación te conectas a esa señal y agarras los valores de los QLineEdit en el slot para que los uses como necesites.

Creo que por ahí van los tiros,

Saludos



--
Este es un mensaje del foro Python de Venezuela - http://www.python.org.ve
Para suscripciones y retiros: http://goo.gl/ug9by
---
Has recibido este mensaje porque estás suscrito al grupo "Python Venezuela" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a python-venezue...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



--
“Yo construyo Soberanía, uso Software Libre”
Wil A. Alvarez
Linux Counter #415026
Debian Counter #259
Reply all
Reply to author
Forward
0 new messages