pygame.mouse.get_pressed () не работает так, как мне нужно в моей функции кнопки - PullRequest
0 голосов
/ 11 января 2020

В рамках игры я пытаюсь создать страницу входа в Pygame. Поскольку мне нужны кнопки, я пытался заставить работать функцию кнопок (которую я видел на другой странице учебника). Тем не менее, я, кажется, столкнулся с проблемой при получении программы для регистрации при щелчке мыши. Ниже я вставил свою функцию для кнопки:

def button(self,msg,x,y,w,h,ic,ac,action=None):
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    print(click)
    if x+w > mouse[0] > x and y+h > mouse[1] > y:
        pygame.draw.rect(screen, ac,(x,y,w,h))
        if click[0] == 1 and action != None:
            action()         
    else:
        pygame.draw.rect(screen, ic,(x,y,w,h))
    smallText = pygame.font.Font("freesansbold.ttf",20)
    textSurf, textRect = self.text_objects(msg, smallText)
    textRect.center = ( (x+(w/2)), (y+(h/2)) )
    screen.blit(textSurf, textRect)
    pygame.display.update()

Каждый раз, когда я запускаю свою программу - независимо от того, что я делаю, мои кнопки остаются в состоянии c и не меняют цвет и не позволяют никаким действиям запустить. Кроме того, строка «print (click)» выводит только когда-либо (0,0,0). Я использую ноутбук для кодирования этой программы, поэтому, возможно, мой трекпад вызывает проблемы? Я не совсем уверен, но любые альтернативы о том, как заставить эту функцию работать, будут высоко оценены!

1 Ответ

0 голосов
/ 15 января 2020

В Pygame вы обычно запускаете функцию события в вашем главном l oop, которая обрабатывает все ваши события.

while self.playing:
    self.draw()
    self.events()
    etc...

В вашей функции события вы можете написать что-то вроде этого:

for event in pygame.event.get():

        # Always here to make it possible to exit when pressing X in game window:
        if event.type == pygame.QUIT:
                self.playing = False
                pygame.quit()
                quit()

        # Left mouse button down events:
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            pos = pygame.mouse.get_pos()
                    if button.collidepoint(pos):
                        print('do what button is supposed to do')

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...