GUI

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. :frowning:

Try to move import battle0811c inside generateWorld (although it’s not a beatiful thing to see from a design point of view).