DirectCheckButtons are similar to buttons, except they represent a binary state that is toggled 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 checkbox
|
0 or 1
|
boxImage
|
Image on the checkbox
|
Image Path
|
boxImageColor
|
Color of the image on the box
|
(R,G,B,A)
|
boxImageScale
|
Scale of the displayed image
|
Number
|
boxPlacement
|
Position of the box relative to the text area
|
‘left’,’right’
|
boxRelief
|
Relief appearance of the checkbox
|
DGG.SUNKEN or DGG.RAISED
|
boxBorder
|
Size of the border around the box
|
Number
|
command
|
Command the button performs when clicked(0 or 1 is passed, depending on the state)
|
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 *
# 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):
if(status):
bk_text = "Checkbox Selected"
else:
bk_text = "Checkbox Not Selected"
textObject.setText(bk_text)
# Add button
b = DirectCheckButton(text = "CheckButton" ,scale=.05,command=setText)
# Run the tutorial
run()
Programmatically changing the indicatorValue
If you programatically want to change the checkbutton's indicatorValue, you need to call setIndicatorValue
afterwards to update the checkbutton, like:
b["indicatorValue"] = True
b.setIndicatorValue()
boxImage and other box* keywords
Just as DirectButton may be passed a 4-tuple of values to be used in the four button states, the box* keyword arguments may be supplied with multiple entries to denote the unchecked and checked state. To supply arguments to be used in the two states of the checkbox, construct a 3-tuple of values with a 'None' in the final entry, i.e. (unchecked, checked, None). For example, to set two different images for the unchecked and checked states:
boxImage = ("pathToDisabledImage.jpg", "pathToEnabled.jpg", None)