Jump to content

  • Log In with Google      Sign In   
  • Create Account

unrecognized event.key


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 nickme   Members   -  Reputation: 205

Like
0Likes
Like

Posted 18 March 2013 - 03:15 PM

hi

 

i had written a program where i want to add xbox 360 controller support.

 

my program crashed when it said 'object Event has no attribute "key"'.  

 

 

            
        for event in pygame.event.get(): # event handling loop
            if event.type == QUIT:
                terminate()
            elif event.type == KEYDOWN or event.type == JOYAXISMOTION:                                     # by removing event.type == JOYAXISMOTION 
                                                                                                                                                        # the program run fine (ran without run time error).
                if (axis_x < 0.0 or event.key == K_LEFT or event.key == K_a) and direction != RIGHT:  # **** program crashed here. ****
                    direction = LEFT
                    print ' going L'
                elif (axis_x > 0. or event.key == K_RIGHT or event.key == K_d) and direction != LEFT:
                    print ' going R'
                    direction = RIGHT
 
it seen that pygame did not recognize event.key when i had the second event checked (the or statement).  is there a way to check both the KEYDOWN and JOYAXISMOTION in a single if statement?  because otherwise, i would have to handle it in a separate block of codes. and it could be logically unsound. imagine if some user uses both keyboard and joystick at the same time!
 
thanks

Edited by nickme, 20 March 2013 - 01:30 PM.


Sponsor:

#2 tp9   Members   -  Reputation: 532

Like
0Likes
Like

Posted 20 April 2013 - 08:08 PM

I would put the JOYAXISMOTION in another elif block after the KEYDOWN block so the keyboard supercedes the joystick. Then each block sets a var and then I would check the state of the var at the end of the event block.


Edited by tp9, 20 April 2013 - 09:30 PM.


#3 tp9   Members   -  Reputation: 532

Like
0Likes
Like

Posted 21 April 2013 - 06:24 AM

Forget what I said earlier. I don't think you can even process 2 events at the same time unless you pull them out of the queue explicitly. For example.

for event in pygame.event.get([KEYDOWN, JOYAXISMOTION]):
    #do something

 

Therefore you won't have a collision. Here is the test I ran to verify the behavior. Move your mouse around the display box and hit Escape at the same time.

import pygame, sys
from pygame.locals import *

def main():
    pygame.init()
    DISPLAYSURF = pygame.display.set_mode((400,300))
    pygame.display.set_caption('Hello world')
    i = 0
    while True:
        for event in pygame.event.get():
            i += 1
            # print "In event loop", event.type
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            if event.type == MOUSEMOTION:
                print 'mouse moved', i
                mouseX, mouseY = event.pos
            if event.type == KEYDOWN:
                print "Key pressed", i
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                
        pygame.display.update()

if __name__=='__main__':
    main()





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS