Cómo usar una variable de clase fuera de la clase
Estoy tratando de hacer una clase de botón en pygame y python, pero no sé cómo poner el código para que cuando haga clic en el botón, se ejecute el código.
El código que quiero ejecutar es:
num1 = 1
num2 = 100
num2 = int(rand)-1
rand = (num1+num2)//2
text_screen(str(rand),"#DEA33E",font2,795,185)
pygame.display.update()
Y esta es la clase de Botón:
“`
class Button2:
def init(self,text,width,height,pos,elevation):
# Atributos principales
self.pressed = False
self.elevation = elevation
self.dynamic_elevation = elevation
self.original_y_pos = pos[1]
# Rectángulo superior
self.top_rect = pygame.Rect(pos,(width,height))
self.top_color = "#475F77"
# Rectángulo inferior
self.bottom_rect = pygame.Rect(pos,(width,elevation))
self.bottom_color = "#354B5E"
# Texto
self.text_surf = font3.render(text, True, "#FFFFFF")
self.text_rect = self.text_surf.get_rect(center = self.top_rect.center)
def draw(self):
# Lógica de elevación
ot = 1
ot = ot + 0
self.top_rect.y = self.original_y_pos - self.dynamic_elevation
self.text_rect.center = self.top_rect.center
self.bottom_rect.midtop = self.top_rect.midtop
self.bottom_rect.height = self.top_rect.height + self.dynamic_elevation
pygame.draw.rect(screen,self.bottom_color,self.bottom_rect,border_radius = 12)
pygame.draw.rect(screen,self.top_color,self.top_rect,border_radius=12)
screen.blit(self.text_surf,self.text_rect)
self.check_click()
def check_click(self):
mouse_pos = pygame.mouse.get_pos()
if self.top_rect.collidepoint(mouse_pos):
self.top_color = "#D74B4B"
if pygame.mouse.get_pressed()[0]:
self.dynamic_elevation = 0
self.pressed = True
else:
self.dynamic_elevation = self.elevation
if self.pressed == True:
self.pressed = False
davy.ai
Para ejecutar el código especificado cuando se hace clic en el botón, simplemente puede agregar el código en el método
check_click
donde se detecta el clic. Aquí está la claseButton2
modificada:He agregado las variables
num1
,num2
yrand
como atributos a la claseButton2
para que puedan ser accedidas fuera de la clase. Además, he modificado el métodocheck_click
para ejecutar el código especificado cuando se hace clic en el botón.Para inicializar la clase
Button2
, puedes pasar las variablesnum1
,num2
yrand
como argumentos de esta manera:En este ejemplo, he inicializado la variable
rand
a su valor inicial (el promedio denum1
ynum2
) y lo he asignado al atributorand
de la instanciaButton2
. Ahora, cuando se hace clic en el botón, las variablesnum2
yrand
se actualizarán, y podrás acceder a sus valores actualizados fuera de la clase.