Foros del Web » Programando para Internet » Python »

problema de novato con nombre global

Estas en el tema de problema de novato con nombre global en el foro de Python en Foros del Web. tengo este codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original def onleftdown ( self , event ) :         pt = event. GetPosition ...
  #1 (permalink)  
Antiguo 19/07/2011, 14:28
 
Fecha de Ingreso: diciembre-2010
Mensajes: 162
Antigüedad: 13 años, 4 meses
Puntos: 1
problema de novato con nombre global

tengo este codigo
Código Python:
Ver original
  1. def onleftdown(self,event):
  2.         pt=event.GetPosition()
  3.         d=event.GetPosition()[0]
  4.         e=event.GetPosition()[1]
  5.         print d,e
  6.         d=x
  7.         e=y
  8.         evento=False
  9.     def onpaint(self,event):
  10.         global evento
  11.         global d
  12.         evento=True
  13.         dc=wx.PaintDC(self)
  14.         dc.SetBrush(wx.Brush("YELLOW"))
  15.         dc.DrawRectangle(0,0,700,700)
  16.         dc.SetPen(wx.Pen("RED"))
  17.         dc.DrawLine(0,350,700,350)
  18.  
  19.         dc2=wx.PaintDC(self)
  20.         dc2.SetBrush(wx.Brush("GREEN"))
  21.         dc2.DrawCircle(10,10,50)
  22.         if evento==True:
  23.             dc2.DrawCircle(d,e,50)

y me dice nombre global "d" no esta definido, con poner global d no alcanza para usar esa variable d en el evento onpaint?? si alguien me puedira explicar que esta mal y como debo encarar este codigo les agradeceria mucho se entiende lo que quiero hacer con dc2.DrawCircle(d,e,50). espero que si. kise utilizar la tupla que entrega GetPosition para volcarla en
Código Python:
Ver original
  1. if evento==True:
  2.    dc2.DrawCircle(d,2,50)
asi si clickeaba en el punto 0,0 por ejemplo del frame dibujaba el circulo en esa posicion.Pero lo que mas se me complica es con el error sobre el nombre global,etc

Última edición por razpeitia; 19/07/2011 a las 14:49 Razón: Resaltado de sintaxis
  #2 (permalink)  
Antiguo 19/07/2011, 14:59
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: problema de novato con nombre global

Deberías leer un poco mas sobre el alcance de las variables.

Esto es lo que estas intentando:
Código Python:
Ver original
  1. def funcion_1(paramentro):
  2.     d = 5
  3.     print d
  4.  
  5. def funcion_2(parametro):
  6.     global d
  7.     print d #Error

Lo que tu quieres hacer es esto:
Código Python:
Ver original
  1. d = 5 #Afuera de las funciones
  2. def funcion_1(paramentro):
  3.     global d
  4.     d = 5
  5.     print d
  6.  
  7. def funcion_2(parametro):
  8.     global d
  9.     print d #Error

Ahora lo que deberías hacer es no usar variables globales y mejor usar miembros de clase de preferencia privados:
Código Python:
Ver original
  1. class Foo:
  2.     def __init__(self):
  3.         self.d = 0
  4.  
  5.     def metodo_1(self, event):
  6.         self.d = 5
  7.  
  8.     def metodo_2(self, event):
  9.         print self.d

Etiquetas: global, nombre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:45.