Jumping actor

Hi all

I am building a 2D game,
and im working now on the movements,
but i have a problem with the jumping act,

i try to make the actor to go up and go back down only by pressing on the up-arrow ones.

but what really happend that he dont make move on the screen!
i check and see that the Coordinate of the actor is moving but the actor himself dont move on the screen.

so how can i update the screen or make the jumping update evrey frame?

this is my code

thenk you all


import direct.directbase.DirectStart
from panda3d.core import CollisionTraverser,CollisionNode
from panda3d.core import CollisionHandlerQueue,CollisionRay
from panda3d.core import Filename,AmbientLight,DirectionalLight
from panda3d.core import PandaNode,NodePath,Camera,TextNode
from panda3d.core import Vec3,Vec4,BitMask32
from direct.gui.OnscreenText import OnscreenText
from direct.actor.Actor import Actor
from direct.showbase.DirectObject import DirectObject
import random, sys, os, math
import time
from direct.gui.OnscreenImage import OnscreenImage
from direct.task import Task 
from math import pi, sin, cos
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from direct.actor.Actor import Actor
from direct.gui.OnscreenImage import OnscreenImage
from pandac.PandaModules import TransparencyAttrib
from direct.interval.IntervalGlobal import Sequence
from panda3d.core import Point3

 




# Function to put instructions on the screen.
def addInstructions(pos, msg):
    return OnscreenText(text=msg, style=1, fg=(1,1,1,1),
                        pos=(-1.3, pos), align=TextNode.ALeft, scale = .05)

# Function to put title on the screen.
def addTitle(text):
    return OnscreenText(text=text, style=1, fg=(1,1,1,1),
                        pos=(1.3,-0.95), align=TextNode.ARight, scale = .07)
wrspeed=0.05
class World(DirectObject):
    
    def __init__(self):
          
        self.keyMap = {"left":0, "right":0, "forward":0, "shift":0, "space":0, "jump":0}
        base.win.setClearColor(Vec4(0,0,0,1))


        # Post the instructions

        #self.title = addTitle("Panda3D Tutorial: Roaming Ralph (Walking on Uneven Terrain)")
        self.inst1 = addInstructions(0.95, "[ESC]: Quit")
        self.inst2 = addInstructions(0.90, "[Left Arrow]: Run Left")
        self.inst3 = addInstructions(0.85, "[Right Arrow]: Run Right")
        self.inst4 = addInstructions(0.80, "[Shift]: Accelerate Ralph")
        
        
        # Set up the environment
        #
        # This environment model contains collision meshes.  If you look
        # in the egg file, you will see the following:
        #
        #    <Collide> { Polyset keep descend }
        #
        # This tag causes the following mesh to be converted to a collision
        # mesh -- a mesh which is optimized for collision, not rendering.
        # It also keeps the original mesh, so there are now two copies ---
        # one optimized for rendering, one for collisions.  

        self.environ = loader.loadModel("models/world")      
        self.environ.reparentTo(render2d)
        self.environ.setPos(0,0,0)
        
       
        
        imageObject = OnscreenImage(image = 'env_sky.jpg', pos = (0,0,0),parent=render2d)
        base.cam.node().getDisplayRegion(0).setSort(20)
        imageObject.setScale(1,1,1)
        
        # Create the main character, Ralph

        #ralphStartPos = self.environ.find("**/start_point").getPos()
        self.ralph = Actor("models/ralph",
                                 {"run":"models/ralph-run",
                                  "walk":"models/ralph-walk"})
        self.ralph.reparentTo(render)
        self.ralph.setScale(.2)
        self.ralph.setPos(0,0,0)
        self.ralph.setHpr(270, 0, 0)
        
        self.bush= Actor("bush2")
        self.bush.reparentTo(render)
        self.bush.setScale(.1)
        self.bush.setPos(2,0,0)
        self.bush.setHpr(270, 0, 0)
        
        self.Ground2= Actor("Ground2")
        self.Ground2.reparentTo(render)
        self.Ground2.setScale(0.1)
        self.Ground2.setPos(2,-55,0)
        self.Ground2.setHpr(270, 0, 0)
        
        
        
        
        
        
        self.accept("escape", sys.exit)
        self.accept("arrow_left", self.setKey, ["left",1])
        self.accept("arrow_right", self.setKey, ["right",1])
        self.accept("arrow_up",self.setKey, ["jump",1])
        self.accept("shift", self.setKey, ["shift",1])
        self.accept("space", self.setKey, ["space",1])
        self.accept("arrow_right-up", self.setKey, ["right",0])
        self.accept("arrow_left-up", self.setKey, ["left",0])
        #self.accept("arrow_up-up", self.setKey, ["jump",0])
        self.accept("shift-up", self.setKey, ["shift",0])
        self.accept("space-up", self.setKey, ["space",0])
        
        
        taskMgr.add(self.move,"test")


        # Game state variables
        self.walking=False
        self.running=False
        self.jumping=False
        # Set up the camera
        
        base.disableMouse()
        base.camera.setPos(self.ralph.getX(),self.ralph.getY() -10,self.ralph.getZ()+2)
        base.camera.lookAt(0,2,2)
      

    
    #Records the state of the arrow keys
    def setKey(self, key, value):
        
        self.keyMap[key] = value
        
        
    
        
              
    def left (self,wrspeed):
        self.ralph.setHpr(270,0,0)
        self.ralph.setPos(self.ralph.getX()-wrspeed,self.ralph.getY(),self.ralph.getZ())
        base.camera.setPos(self.ralph.getX(),self.ralph.getY() -10,self.ralph.getZ()+2)
        base.camera.lookAt(self.ralph.getX()-0.1,2,2)
        if(wrspeed==0.05):
          if(self.walking is False):  
           self.ralph.loop("walk")
           self.running=False
           self.walking=True
        else:
          if(self.running is False):  
           self.ralph.loop("run")
           self.running=True
           self.walking=False
           self.ralph.loop("run")
        
       
    def right (self,wrspeed):
         self.ralph.setHpr(90,0,0)
         self.ralph.setPos(wrspeed+self.ralph.getX(),self.ralph.getY(),self.ralph.getZ())
         base.camera.setPos(self.ralph.getX(),self.ralph.getY() -10,self.ralph.getZ()+2)
         base.camera.lookAt(self.ralph.getX()+0.1,2,2)
         if(wrspeed==0.05):
          if(self.walking is False):  
           self.ralph.loop("walk")
           self.running=False
           self.walking=True
         else:
          if(self.running is False):  
           self.ralph.loop("run")
           self.running=True
           self.walking=False
           self.ralph.loop("run")
           
    def jump1 (self):      
       self.ralph.setZ(self.ralph.getZ()+0.5)
       time.sleep(0.5)
       self.ralph.setZ(self.ralph.getZ()-0.5)
        
          
    def stop (self):      
        self.ralph.stop()
        self.walking = False
        self.running = False 
        self.ralph.pose("walk",5)
             
    
    
    def move(self,task):
        
        if (self.keyMap["shift"]!=0):
          
          wrspeed=0.1
          print(wrspeed)
        else:
          wrspeed=0.05
            
        if (self.keyMap["left"]!=0):
           self.left(wrspeed)
       
        if (self.keyMap["right"]!=0):
            self.right(wrspeed)
        
        if (self.keyMap["jump"]!=0):
            self.jump1()
             
             
             
             
        if (self.keyMap["right"]==0 and self.keyMap["left"]==0 ):    
          self.stop()
        
           
               
       
        
        return Task.cont


w = World()
run()