Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Segmented Controls #201

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

SKaplanOfficial
Copy link
Contributor

Summary:

Adds supports for segmented control menu items, an example which uses them, and supporting documentation. Also updates the documentation to include docs for slider and separator menu items.

Segmented controls are sets of buttons that can be switched on and off, optionally allowing multiple selections at a time. This PR adds a SegmentedMenuItem class alongside a segmented decorator which allows users to easily define segmented controls with a list of strings as the button titles. Users can also specify whether to support multiselection, whether the selection should be momentary (i.e. act as a one-off button) or not, the style of the button set, and a callback function.

Example:

import rumps

@rumps.segmented(segments=["10"])
def button_press(sender):
    print(sender.selection)

app = rumps.App('Segments', quit_button=rumps.MenuItem('Quit', key='q'))
app.menu = [
    rumps.SegmentedMenuItem(["1", "2", "3"], multiselect=True, style='bordered', callback=lambda item: print("Current selection:", item.selection)),
    rumps.SegmentedMenuItem(["4", "5", "6"], style='rectangular', callback=lambda item: print("Selected", item.selection[0])),
    rumps.SegmentedMenuItem(["7", "8", "9"], momentary=True, style='separated', callback=lambda item: print("Clicked", item.selection[0])),
]
app.run()

Image:

SegmentedControl

@SKaplanOfficial
Copy link
Contributor Author

@daredoes Another one, when you get a chance 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant