2017-07-09 11 views
0

Ich versuche ein Programm in Pygame zu erstellen, das etwas ausgibt, wenn die Maus in einem bestimmten Bereich gedrückt wird. Ich habe versucht, die mouse.get_pos und mouse.get_pressed, aber ich bin mir nicht sicher, ob ich sie richtig verwende. Hier ist mein CodeWie überprüft man, ob die Maus in einem bestimmten Bereich angeklickt ist (pygame)

while True: 
    DISPLAYSURF.fill(BLACK) 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.quit() 
       sys.exit() 
      mpos = pygame.mouse.get_pos() 
      mpress = pygame.mouse.get_pressed() 
      if mpos[0] >= 400 and mpos[1] <= 600 and mpress == True: 
       print "Switching Tab" 
+0

Was passiert, wenn Sie diesen Code ausführen? Vielleicht sollten Sie einen Debug-Code implementieren, um mpos [0] und mpos [1] auszugeben, und drücken Sie auf den Bildschirm oder die Konsole, damit Sie sehen können, was passiert. – JeffUK

Antwort

0

in meinen Spielen habe ich MOUSEBUTTONDOWN Maus drücken zu überprüfen:

while True: 
    DISPLAYSURF.fill(BLACK) 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     (x, y)= pygame.mouse.get_pos() 
     if x >= 400 and y <= 600 and event.type == pygame.MOUSEBUTTONDOWN: 
      print "Switching Tab" 
1

Verwenden Sie ein pygame.Rect den Bereich zu definieren, überprüfen, ob die Maustaste in der Ereignisschleife und Verwendung gedrückt wurde die collidepoint Methode der area rect zu sehen, ob es mit der event.pos (alternativ pygame.mouse.get_pos()) kollidiert.

import sys 
import pygame as pg 


def main(): 
    screen = pg.display.set_mode((640, 480)) 
    clock = pg.time.Clock() 
    # A pygame.Rect to define the area. 
    area = pg.Rect(100, 150, 200, 124) 

    done = False 

    while not done: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       done = True 
      if event.type == pg.MOUSEBUTTONDOWN: 
       if event.button == 1: # Left mouse button. 
        # Check if the rect collides with the mouse pos. 
        if area.collidepoint(event.pos): 
         print('Area clicked.') 

     screen.fill((30, 30, 30)) 
     pg.draw.rect(screen, (100, 200, 70), area) 

     pg.display.flip() 
     clock.tick(30) 


if __name__ == '__main__': 
    pg.init() 
    main() 
    pg.quit() 
    sys.exit() 
Verwandte Themen