How to Create a Gravity and Jumping System

Hi, I need to know how I can make a gravity system, and how to jump with it. Here is my current code:

from direct.showbase.ShowBase import ShowBase
from direct.gui.DirectButton import DirectButton
from direct.gui.OnscreenImage import OnscreenImage
from direct.gui.OnscreenText import OnscreenText
from panda3d.core import loadPrcFileData

loadPrcFileData('', 'window-title Test Program')
loadPrcFileData('', 'win-size 900 500')

class MyApp(ShowBase):
	def __init__(self):
		ShowBase.__init__(self)

		self.dt = globalClock.getDt()

		base.disableMouse()
		base.setBackgroundColor(0, 0, 0)

		self.cam.setPos(-10, 0, 2)
		self.title()

		self.car = loader.loadModel("car")
		self.car.reparentTo(render)
		self.car.setScale(1)
		self.car.setPos(0, 10, 0)

		self.keyMap = {"w": False,
					   "s": False,
					   "a": False,
					   "d": False}

		self.accept("w", self.setKey, ["w", True])
		self.accept("s", self.setKey, ["s", True])
		self.accept("a", self.setKey, ["a", True])
		self.accept("d", self.setKey, ["d", True])

		self.accept("w-up", self.setKey, ["w", False])
		self.accept("s-up", self.setKey, ["s", False])
		self.accept("a-up", self.setKey, ["a", False])
		self.accept("d-up", self.setKey, ["d", False])

	def setKey(self, key, value):
		self.keyMap[key] = value

	def moveCar(self, task):

		if self.keyMap["w"]:
			self.car.setY(self.car, 0.1 * self.dt)

		if self.keyMap["s"]:
			self.car.setY(self.car, -0.1 * self.dt)

		if self.keyMap["a"]:
			self.car.setH(self.car, 1 * self.dt)

		if self.keyMap["d"]:
			self.car.setH(self.car, -1 * self.dt)

		return task.cont

	def moveCam(self, task):

		self.cam.setX(self.cam, self.dt * 0.05)

		if(self.cam.getX() > 0):
			self.cam.reparentTo(self.car)
			self.cam.setY(self.car, -10)
			self.cam.setZ(self.car, 3)
			self.cam.lookAt(self.car)
			taskMgr.add(self.moveCar, "Car Control")
			return task.done

		return task.cont

	def title(self):

		self.image = OnscreenImage(image = ("playbutton.png"), scale = (1.8, 1, 1),
			pos = (0, 0, 0))
		self.image.setTransparency(True)

		self.text = OnscreenText(text = "Test Game - Hit Play Button to Play", 
			scale = (0.2, 0.2, 0.2), pos = (0, 0.7), fg = (0, 1, 0, 1), bg = (0, 0, 0, 0.3))

		self.button = DirectButton(image = ("playbutton.png"),
			scale = (0.3, 0.1, 0.1), pos = (0, 0, -0.8), command = self.removeTitle)
		self.button.setTransparency(True)

	def removeTitle(self):

		self.image.setScale(0.3, 0, 0.1)
		self.image.setPos(-1.4, 0, -0.8)
		self.text.remove_node()
		self.button.remove_node()

		base.setBackgroundColor(0.5, 0.5, 0.5)

		self.environ = loader.loadModel("environ")
		self.environ.reparentTo(render)
		self.environ.setScale(10)
		self.environ.setPos(-8, 42, 0)

		self.sound = loader.loadSfx("models/audio/sfx/GUI_click.wav")
		self.sound.play()

		taskMgr.add(self.moveCam, "Camera Control")

app = MyApp()
app.run()

I would like to make it so my self.car model can jump around, and of course, jump once, not hover up in the air, going higher and higher when the space bar is held down. Thanks!

May be this snippet will be helpful my FPS script awsd+jumping wall sliding