2014-09-17 4 views
0

Так в настоящее время мой кодКак иметь чек Pygame, когда мышь проходит вниз

import pygame 

def main(): 
    pygame.init() 

    size = width, height = 800,700 
    backgroundColor = [0, 0, 255] 


    screen = pygame.display.set_mode(size) 

    screen.fill(backgroundColor) 

    pygame.display.flip() 

    while True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       return 
      if pygame.mouse.get_pressed()[0]: 
       print event.pos 

main() 

То, что я пытаюсь сделать, это то, что в то время как пользователь удерживает мышь, положение курсора записывается , То, что я имею дело, за исключением, когда вы щелкаете с экрана, а затем нажмите кнопку назад на экране, если выдает ошибку:

line 23, in main print event.pos AttributeError: event member not defined

Как я могу иметь получить те же результаты, как этот код дает мне, но когда я нажимаю с экрана, и нажмите обратно, это не даст мне ошибку?

ответ

1

Просто обработать исключение:

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      return 
     if pygame.mouse.get_pressed()[0]: 
      try: 
       print event.pos 
      except AttributeError: 
       pass 

Если вы печатаете из самого event на каждой итерации, вы увидите, что вы получаете в ActiveEvent при нажатии на окно, в дополнение к нормальному MouseMotion события:

<Event(4-MouseMotion {'buttons': (0, 0, 0), 'pos': (703, 14), 'rel': (10, -12)})> 
<Event(4-MouseMotion {'buttons': (0, 0, 0), 'pos': (714, 1), 'rel': (11, -13)})> 
<Event(1-ActiveEvent {'state': 1, 'gain': 0})> # clicked off 
<Event(1-ActiveEvent {'state': 1, 'gain': 1})> # clicked on 

в момент нажатия кнопки мыши обратно, мышь нажата вниз, так что вы пытаетесь обрабатывать событие, которое вызывает исключение. Самое простое - просто поймать это исключение, когда оно произойдет. Вы также можете проверить тип события, чтобы решить, следует ли пытаться печатать.

+0

Почему вы получаете местоположение мыши от события? Я думаю, что для этого есть функция get_pos(), и вы можете полностью переместить этот код за пределы цикла событий. В качестве альтернативы вы можете проверить событие перемещения мыши. – user3757614

+0

Потому что они проверяют, нет ли мыши, а не если она перемещена. – KodyVanRy

 Смежные вопросы

  • Нет связанных вопросов^_^