DirectRadioButton

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. 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
base.run()