python - Leap Motion + Pygame | Displaying text in window -
i'm trying use pygame library leap motion. i'm trying display of data leap motion in window, when try retrieve variable samplelistener
class , feed main
method, error:
attributeerror: 'function' object has no attribute 'avg_pos'
is there i'm misunderstanding class > method > variable structure?
here code i'm working with:
import leap, sys, pygame #window windowwidth = 800 windowheight = 600 #leap motion settings class samplelistener(leap.listener): def on_init(self, controller): print "initialized" def on_connect(self, controller): print "connected" def on_disconnect(self, controller): # note: not dispatched when running in debugger. print "disconnected" def on_exit(self, controller): print "exited" def on_frame(self, controller): # recent frame , report basic information if not self.frame.hands.empty: # first hand hand = self.frame.hands[0] # check if hand has fingers fingers = hand.fingers if not fingers.empty: # calculate hand's average finger tip position avg_pos = leap.vector() finger in fingers: avg_pos += finger.tip_position avg_pos /= len(fingers) print "hand has %d fingers, average finger tip position: %s" % ( len(fingers), avg_pos) #application loop def main(): pygame.init() window = pygame.display.set_mode((windowwidth,windowheight)) pygame.display.set_caption("test123") #surface background = pygame.surface(window.get_size()) background = background.convert() background.fill ((50,0,80)) if pygame.font: font = pygame.font.font(none, 36) text = font.render("%s" % samplelistener.on_frame.len(fingers), 1, (255, 255, 255)) textpos = text.get_rect(centerx=background.get_width()/2) background.blit(text, textpos) # create sample listener , controller listener = samplelistener() controller = leap.controller() # have sample listener receive events controller controller.add_listener(listener) clock = pygame.time.clock() while true: clock.tick(60) #handle input events event in pygame.event.get(): if event.type == pygame.quit: sys.exit() # remove sample listener when done controller.remove_listener(listener) window.blit(background, (0,0)) pygame.display.flip() if __name__ == "__main__": main()
edit: here full traceback error -
line 53, in main text = font.render("%s" % samplelistener.on_frame.avg_pos, 1, (255, 255, 255)) attributeerror: 'function' object has no attribute 'avg_pos'
thanks!
to me seems might pygame.font not boolean, therefore can not used in if statement. ( quote:
def main(): pygame.init() window = pygame.display.set_mode((windowwidth,windowheight)) pygame.display.set_caption("test123") #surface background = pygame.surface(window.get_size()) background = background.convert() background.fill ((50,0,80)) if pygame.font: \\ here <--- font = pygame.font.font(none, 36) text = font.render("%s" % samplelistener.on_frame.len(fingers), 1, (255, 255, 255)) textpos = text.get_rect(centerx=background.get_width()/2) background.blit(text, textpos)
)
Comments
Post a Comment