Flexible images slider highly customizable for pygame.
Project description
pygame-imslider
Flexible images slider for Pygame engine.
Default
Example Code:
slider = ImSlider((800, 300))
Multiple Slides
Example Code:
slider = ImSlider((800, 300), per_page=3, rewind=True)
1 Slide Per Move
Example Code:
slider = ImSlider((800, 300), stype=STYPE_LOOP, per_page=3, per_move=1)
Focus Center
Example Code:
slider = ImSlider((800, 300), stype=STYPE_LOOP, per_page=3, per_move=2, focus='center')
Fade Transition
Example Code:
slider = ImSlider((800, 300), stype=STYPE_FADE, rewind=True, focus=False)
Install
$ pip3 install pygame-imslider
Basic usage
ImSlider only require a pygame surface to be displayed on and a index consumer function, as in the following example :
from pygame_imslider import *
def consumer(index):
print('Current index : %s' % index)
# Initializes and activates ImSlider
slider = ImSlider((300, 100), callback=consumer)
slider.load_images(['image1.png', 'image2.png', 'image3.png',])
The slider has the following optional parameters:
stype: determine a slider type: STYPE_SLIDE, STYPE_LOOP or STYPE_FADE
per_page: determine how many slides should be displayed per page. If stype=STYPE_FADE, this option is ignored.
per_move: determine how many slides should be moved when a slider goes to next or perv. If stype=STYPE_FADE, this option is ignored.
focus: determine which slide should be focused if there are multiple slides in a page. A string “center” is acceptable for centering slides.
rewind: whether to rewind a slider before the first slide or after the last one. If stype=STYPE_LOOP, this option is ignored.
speed: transition duration in seconds.
renderer: a ImSliderRenderer to customize colors of the slider
callback: callback called each time the selection is changed.
Event management
A ImSlider object handles the following pygame event :
MOUSEBUTTONDOWN
MOUSEBUTTONUP
FINGERDOWN
FINGERUP
KEYDOWN
KEYUP
JOYHATMOTION
In order to process those events, slider instance event handling method should be called like in the following example:
while True:
events = pygame.event.get()
# Update internal variables
slider.update(events)
# Draw the slider
slider.draw(surface)
#
# Perform other tasks here
#
# Update the display
pygame.display.flip()
The global performances can be improved avoiding to flip the entire display at each loop by using the pygame.display.update() function.
while True:
# Draw the slider
rects = slider.draw(surface)
# Update only the dirty rectangles of the display
pygame.display.update(rects)
Custom rendering using ImSliderRenderer
If you want to customize slider rendering you could provide a ImSliderRenderer instance at ImSlider construction.
slider = ImSlider(size, renderer=ImSliderRenderer.DARK)
Here is the list of default renderers provided with pygame-imslider:
ImSliderRenderer.DEFAULT
ImSliderRenderer.DARK
A custom ImSliderRenderer can be built using following constructor :
renderer = ImSliderRenderer(
# RGB tuple for arrow color (one per state: released, pressed).
((255, 255, 255), (54, 54, 54)),
# RGB tuple for dot color (one tuple per state).
((120, 120, 120), (54, 54, 54)),
# RGB tuple for sldie color.
(242, 195, 195),
# RGB tuple for selected image color.
(245, 95, 76),
# RGB tuple for selected page color.
(255, 255, 255),
# RGB tuple for background color.
(32, 135, 156)
)
You can also create your own renderer. Just override ImSliderRenderer class and override any of the following methods:
draw_arrow(surface, image, pressed): Draw an arrow.
draw_dot(surface, image, pressed, selected): Draw a dot.
draw_slide(surface, image, selected): Draw a slide.
draw_background(surface): Draw background.
Getting/Setting data
Several information can be retrieved from the slider:
slider = ImSlider(...)
# Get a pygame.Rect object in which the slider is included.
slider.get_rect()
# Get the current index.
slider.get_index()
# Set the current index.
slider.set_index(2)
Run examples
Several examples are provided with the pygame_imslider library. To run the examples, simply execute these commands in a terminal:
python -m pygame_imslider.examples.default
python -m pygame_imslider.examples.multiple
python -m pygame_imslider.examples.one_per_move
python -m pygame_imslider.examples.small_loop
python -m pygame_imslider.examples.focus
python -m pygame_imslider.examples.fade
Contributing
If you develop you own renderer please share it ! I will keep a collection of rendering class in this repository. Don’t hesitate to report bug, feedback, suggestion into the repository issues section.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for pygame_imslider-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 243bc730080a62d0f0ea6cf153dfdda2c1df228e75c6ef650d7d53c4b7488974 |
|
MD5 | bfde6e3b2f0234041eb03d5713db4f37 |
|
BLAKE2b-256 | 592489303516b314a28b86cee9e81b730c6f245e4a47b4cf5ccd9d5eb6334d11 |