1

I want to code a very simple progam that outputs text to the pygame screen when i press a button, but for some reason it isn't outputting when i press the button. Any help? Thanks.

import pygame
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)

X=800
Y=480

pygame.init()
pygame.font.init()
my_screen = pygame.display.set_mode((800, 480) , 
pygame.RESIZABLE)
my_font = pygame.font.Font('freesansbold.ttf' , 36)
text = my_font.render("Please wait, loading...",True,green)
textRect=text.get_rect()
textRect.center = (X // 2, Y //2)
pressed=False
boxThick=[0,10,10,10,10,10]
still_looping =True
while still_looping:
  for event in pygame.event.get():
    if event.type==pygame.QUIT:
      still_looping=False


  pygame.draw.rect(my_screen,(0,255,0),(0,0,200,200),boxThick[0])
  pygame.draw.rect(my_screen,(50,50,50),(200,200,100,50),0)

  a,b,c = pygame.mouse.get_pressed()
  if a:
    pressed = True
  else:
    if pressed == True:
      x,y = pygame.mouse.get_pos()
      if x> 200 and x<300 and y>200 and y<200:
               my_screen.blit(text,textRect)
               pressed = False


  pygame.display.update()

1 Answers1

0

The text is not displayed because the conditions y>200 and y<200 is always evaluated with False. Since the height of the rectangular area is 50, the condition must be y>200 and y<250:

if x> 200 and x<300 and y>200 and y<200:

if x> 200 and x<300 and y>200 and y<250:
    # [...]

Since comparison operators can be chained in Python, the code can be simplified:

if 200 < x < 300 and 200 < y < 250:
    # [...]

However, if you want to test that the mouse pointer is in a rectangular area, I recommend using a pygame.Rect object and collidepoint():

rect = pygame.Rect(200, 200, 100, 50)
x, y = pygame.mouse.get_pos()
if rect .collidepoint(x, y):
    # [...]
Rabbid76
  • 202,892
  • 27
  • 131
  • 174