Panda3D Manual: DirectRadioButton

Note: This feature is only available in Panda3D versions 1.5.3 and higher

DirectRadioButtons are similar to check buttons, except only one button is selected when it is clicked. Their usage is almost identical to regular buttons, except that the text area and box area can be modified separately.

Keyword Definition Value
text_scale Scale of the displayed text (sx,sz)
indicatorValue The initial boolean state of the radiobutton 0 or 1
variable The variable whose value will be set by radiobutton. Since we can not use call by reference for int or string variables in python, I used a list insteads. define a list and pass it
value The value to be set to the variable. Since we are using a list, we can define multiple values. But the length of value list must be same as length of variable list. a list of values
others The list of radio button instances sharing same variable. This must be set by using setOthers() after all radiobutton is created. a list of radioButton instances
boxImage BG Image of the radio button Image Path
boxImageColor Color of the BG image (R,G,B,A)
boxImageScale Scale of the BG image Number
boxGeom FG Image on the radio button Image Path
boxGeomColor Color of the FG image (R,G,B,A)
boxGeomScale Scale of the FG image Number
boxPlacement Position of the box relative to the text area ‘left’,’right’, ‘above’, ‘below’, ‘center’
boxBorder Size of the border around the box Number
command Command the button performs when clicked (In version 1.6 and higher, no parameter is passed unless extraArgs are defined. Before, a single argument was passed by default.) Function
extraArgs Extra arguments to the function specified in command [Extra Arguments]
commandButtons Which mouse button must be clicked to do the command LMB, MMB, or RMB
rolloverSound The sound made when the cursor rolls over the button Sound File Path
clickSound The sound made when the cursor clicks on the button Sound File Path
pressEffect Whether or not the button sinks in when clicked <0 or 1>

Example

import direct.directbase.DirectStart
from direct.gui.OnscreenText import OnscreenText 
from direct.gui.DirectGui import *
from panda3d.core import *
 
v = [0]
# Add some text
bk_text = "This is my Demo"
textObject = OnscreenText(text = bk_text, pos = (0.95,-0.95), 
scale = 0.07,fg=(1,0.5,0.5,1),align=TextNode.ACenter,mayChange=1)
 
# Callback function to set  text 
def setText(status=None):
    bk_text = "CurrentValue : %s"%v
    textObject.setText(bk_text)
 
# Add button
buttons = [
    DirectRadioButton(text = 'RadioButton0', variable=v, value=[0], scale=0.05, pos=(-0.4,0,0), command=setText),
    DirectRadioButton(text = 'RadioButton1', variable=v, value=[1], scale=0.05, pos=(0,0,0), command=setText),
    DirectRadioButton(text = 'RadioButton2', variable=v, value=[2], scale=0.05, pos=(0.4,0,0), command=setText)
]
 
for button in buttons:
    button.setOthers(buttons)
 
# Run the tutorial
run()