How can i add GUI to run my panda3d program??
i created a small game and i want to run it by clicking a start button. How can i do it? plz help me guys…
Please don’t double-post. I deleted your thread in General Discussion.
I Created my menu using the code given below
import direct.directbase.DirectStart
from pandac.PandaModules import *
from direct.showbase.DirectObject import DirectObject
from direct.gui.DirectGui import *
from pandac.PandaModules import TransparencyAttrib
from direct.task import Task
from direct.fsm import FSM
import sys, os
import battle0811c
def generateWorld():
menu.destroy()
class mainMenu(DirectObject):
def __init__(self):
wp = WindowProperties()
wp.setTitle("Menu Testing")
wp.setSize(800, 600)
self.mainFrame = DirectFrame(frameColor=(0, 0, 0, 1),
frameSize=(-2, 2, -2, 2),
pos=(0, 0, 0))
self.background = OnscreenImage(image = 'MenuBackground.png', pos = (0, 0, 0), scale = (0.3, 0.5, 0.8))
self.background.setTransparency(TransparencyAttrib.MAlpha)
self.background.reparentTo(self.mainFrame)
self.buttonMaps = loader.loadModel("mainButton_maps")
self.startButton = DirectButton(text = "Start", text_scale=(0.07, 0.07), relief=None, geom= (self.buttonMaps.find("**/button_ready"),
self.buttonMaps.find("**/button_click"),
self.buttonMaps.find("**/button_rollover"),
self.buttonMaps.find("**/button_disabled")), command=generateWorld, pos=(-1, 0, 0.6))
self.startButton.reparentTo(self.mainFrame)
self.instructionsButton = DirectButton(text = "Instructions", text_scale=(0.07, 0.07), relief=None, geom= (self.buttonMaps.find("**/button_ready"),
self.buttonMaps.find("**/button_click"),
self.buttonMaps.find("**/button_rollover"),
self.buttonMaps.find("**/button_disabled")), command=self.seeInstructions, pos=(-1, 0, 0.2))
self.instructionsButton.reparentTo(self.mainFrame)
self.optionsButton = DirectButton(text = "Options", text_scale=(0.07, 0.07), relief=None, geom= (self.buttonMaps.find("**/button_ready"),
self.buttonMaps.find("**/button_click"),
self.buttonMaps.find("**/button_rollover"),
self.buttonMaps.find("**/button_disabled")), command=sys.exit, pos=(-1, 0, -0.2))
self.optionsButton.reparentTo(self.mainFrame)
self.exitButton = DirectButton(text = "Exit", text_scale=(0.07, 0.07), relief=None, geom= (self.buttonMaps.find("**/button_ready"),
self.buttonMaps.find("**/button_click"),
self.buttonMaps.find("**/button_rollover"),
self.buttonMaps.find("**/button_disabled")), command=sys.exit, pos=(-1, 0, -0.6))
self.exitButton.reparentTo(self.mainFrame)
self.instructionsFrame = DirectFrame(frameColor=(0, 0, 0, 1),
frameSize=(-2, 2, -2, 2),
pos=(0, 0, 0))
self.instructionsFrame.hide()
self.instrTitle = DirectLabel(text="Keyboard Controls:", text_scale=(0.1, 0.1), relief=None, text_fg=(255, 255, 255, 100), pos=(-0.9, 0, 0.9))
self.instrTitle.reparentTo(self.instructionsFrame)
self.gameInstructions1 = DirectLabel(text="WASD - Character control", text_scale=(0.08, 0.08), relief=None, text_fg=(255, 255, 255, 100), pos=(-0.8, 0, 0.8))
self.gameInstructions1.reparentTo(self.instructionsFrame)
self.gameInstructions2 = DirectLabel(text="Up & Down Arrows - Look up & down", text_scale=(0.08, 0.08), relief=None, text_fg=(255, 255, 255, 100), pos=(-0.595, 0, 0.7))
self.gameInstructions2.reparentTo(self.instructionsFrame)
self.gameInstructions3 = DirectLabel(text="E - Jump", text_scale=(0.08, 0.08), relief=None, text_fg=(255, 255, 255, 100), pos=(-1.1, 0, 0.6))
self.gameInstructions3.reparentTo(self.instructionsFrame)
self.gameInstructions4 = DirectLabel(text="Space Bar - Shoot", text_scale=(0.08, 0.08), relief=None, text_fg=(255, 255, 255, 100), pos=(-0.945, 0, 0.5))
self.gameInstructions4.reparentTo(self.instructionsFrame)
self.gameInstructions5 = DirectLabel(text="Q - Switch weapons", text_scale=(0.08, 0.08), relief=None, text_fg=(255, 255, 255, 100), pos=(-0.905, 0, 0.4))
self.gameInstructions5.reparentTo(self.instructionsFrame)
self.gameInstructions6 = DirectLabel(text="Escape - Exit", text_scale=(0.08, 0.08), relief=None, text_fg=(255, 255, 255, 100), pos=(-1.03, 0, 0.3))
self.gameInstructions6.reparentTo(self.instructionsFrame)
self.backFromInstr = DirectButton(text = "Back", text_scale=(0.07, 0.07), relief=None, geom= (self.buttonMaps.find("**/button_ready"),
self.buttonMaps.find("**/button_click"),
self.buttonMaps.find("**/button_rollover"),
self.buttonMaps.find("**/button_disabled")), command=self.seeMainMenu, extraArgs=[self.instructionsFrame], pos=(1, 0, -0.8))
self.backFromInstr.reparentTo(self.instructionsFrame)
self.accept("escape", sys.exit)
def destroy(self):
self.mainFrame.destroy()
def seeInstructions(self):
self.mainFrame.hide()
self.instructionsFrame.show()
def seeMainMenu(self, fromFrame):
fromFrame.hide()
self.mainFrame.show()
menu = mainMenu()
run()
but my game battle0811c starts before showing the menu. how can i correct it?? i need a help… plz help me guys…
oh iam really sorry.
Try to move import battle0811c inside generateWorld (although it’s not a beatiful thing to see from a design point of view).