DirectScrollBarΒΆ
A DirectScrollBar is similar to the “scroll bar” widget commonly used by the
user to page through a large document. DirectScrollBar is available beginning
in Panda3D 1.1. It consists of a long trough, a thumb that slides along the
trough, and a pair of buttons on either side of the trough to scroll one line
at a time. A DirectScrollBar can be oriented either vertically or
horizontally. The DirectScrollBar is similar in function to
DirectSlider, but it is specifically designed for scrolling through a
large window. In fact, a pair of DirectScrollBars is used to implement the
DirectScrolledFrame, which manages this scrolling functionality
automatically. (Because DirectScrolledFrame exists, you will probably not need
to create a DirectScrollBar directly, unless you have some custom purpose that
requires a scroll bar.) DirectScrollBar has many things in common with
DirectSlider. Like DirectSlider, the normal DirectGui parameters
such as frameSize, geom, and relief control the look of the trough. You can
control the look of the thumb by prefixing each of these parameters with the
prefix “thumb_”, e.g. thumb_frameSize;
similarly, you can control the look of the two scroll buttons by prefixing
these with “incButton_” and “decButton_”. You can retrieve or set the
current position of the thumb with
myScrollBar['value'].
| Keyword | Definition | Value |
| value | Initial position of the thumb | Default is 0 |
| range | The (min, max) range of the thumb | Default is (0, 1) |
| pageSize | The amount to jump the thumb when the user clicks left or right, (up or down if the scrollbar is vertical), of the thumb; this also controls the width of the thumb when resizeThumb is True | Default is 0.1 |
| scrollSize | The amount to move the thumb when the user clicks once on either scroll button | Default is 0.01 |
| orientation | The orientation of the scroll bar | DGG.HORIZONTAL or DGG.VERTICAL |
| manageButtons | Whether to automatically adjust the buttons when the scroll bar’s frame is changed | True or False |
| resizeThumb | Whether to adjust the width of the thumb to reflect the ratio of pageSize to the overall range; requires manageButtons to be True as well | True or False |
| command | Function called when the position of the thumb changes (takes no arguments) | Function |
| extraArgs | Extra arguments to the function specified in command | [Extra Arguments] |
| thumb_geom, thumb_relief, thumb_text, thumb_frameSize, etc. | Parameters to control the look of the thumb | Any parameters appropriate to [[DirectButton]] |
| incButton_geom, incButton_relief, incButton_text, incButton_frameSize, etc. | Parameters to control the look of the lower or right scroll button | Any parameters appropriate to [[DirectButton]] |
| decButton_geom, decButton_relief, decButton_text, decButton_frameSize, etc. | Parameters to control the look of the upper or left scroll button | Any parameters appropriate to [[DirectButton]] |
Here is a small example on how to create the scrollbar:
from direct.gui.DirectGui import DirectScrollBar
mybar = DirectScrollBar(range=(0, 100), value=50, pageSize=3, orientation= DGG.VERTICAL)
mybar.setPos(-1, 0, -0.5)
This will give you a scrollbar at the lower left side of the screen. If you want to parent the scrollbar to a determined frame, you add the keyword parent to the set of keyboards like so:
mybar = DirectScrollBar(parent=myframe, range=(0,100), value=50, pageSize=3, orientation= DGG.VERTICAL)
mybar.setPos(-1, 0, -0.5)