
Security News
/Research
npm Phishing Email Targets Developers with Typosquatted Domain
A phishing attack targeted developers using a typosquatted npm domain (npnjs.com) to steal credentials via fake login pages - watch out for similar scams.
A lightweight Python package for creating toggle buttons and groups using CustomTkinter.
ctk_toggle
is a lightweight Python package for creating toggle buttons and groups using CustomTkinter.
Install via pip:
pip install ctk_toggle
Import modules:
from ctk_toggle import CTkToggleButton, CTkToggleGroup
Check the examples/ directory for usage examples.
See CONTRIBUTING.md.
This project is licensed under the MIT License - see the LICENSE file for details.
CTkToggleGroup
class CTkToggleGroup:
"""
A group for managing toggle buttons.
"""
def __init__(self, buttons: Optional[List[CTkToggleButton]] = None, disable_color: str = "lightgrey"):
"""
Initialize a CTkToggleGroup.
Args:
buttons (Optional[List[CTkToggleButton]]): List of buttons in the group.
disable_color (str): Color for disabled buttons.
Raises:
TypeError: If buttons is not a list of CTkToggleButton instances or None.
ValueError: If disable_color is not a string.
"""
def add_button(self, button: CTkToggleButton):
"""
Add a button to the group.
Args:
button (CTkToggleButton): The button to add.
Raises:
TypeError: If button is not an instance of CTkToggleButton.
"""
def remove_button(self, button: CTkToggleButton):
"""
Remove a button from the group.
Args:
button (CTkToggleButton): The button to remove.
Raises:
TypeError: If button is not an instance of CTkToggleButton.
"""
def set_active_button(self, button: CTkToggleButton):
"""
Activate a specific button.
Args:
button (CTkToggleButton): The button to activate.
Raises:
TypeError: If button is not an instance of CTkToggleButton.
"""
def deactivate_all(self):
"""
Deactivate all buttons in the group.
"""
def get_active_button(self) -> Optional[CTkToggleButton]:
"""
Get the currently active button, if any.
Returns:
Optional[CTkToggleButton]: The currently active button, or None if no button is active.
"""
def _update_buttons(self):
"""
Update all buttons when one is disabled.
"""
def _configure_button(self, button: CTkToggleButton):
"""
Configure a button for the group.
Args:
button (CTkToggleButton): The button to configure.
Raises:
TypeError: If button is not an instance of CTkToggleButton.
"""
def _handle_button_toggle(self, button: CTkToggleButton):
"""
Handle toggle logic for a button.
Args:
button (CTkToggleButton): The button that was toggled.
Raises:
TypeError: If button is not an instance of CTkToggleButton.
"""
CTkToggleButton
class CTkToggleButton(ctk.CTkButton):
"""
A CustomTkinter button with toggle functionality.
"""
def __init__(
self,
master=None,
toggle_color: str = "#c1e2c5",
disable_color: str = "lightgrey",
toggle_group: Optional[Any] = None,
**kwargs,
):
"""
Initialize a CTkToggleButton with toggle functionality.
Args:
master: Parent widget.
toggle_color (str): Color when toggled.
disable_color (str): Color when disabled.
toggle_group (Optional[CTkToggleGroup]): Group to coordinate toggling.
**kwargs: Additional keyword arguments for CTkButton.
Raises:
ValueError: If toggle_color or disable_color is not a string.
TypeError: If toggle_group is not an instance of CTkToggleGroup or None.
"""
def toggle(self, event=None):
"""
Handle button toggle behavior.
Args:
event: The event that triggered the toggle.
Raises:
RuntimeError: If the button is in an invalid state.
"""
def set_toggle_state(self, state: bool):
"""
Set the toggle state and update appearance.
Args:
state (bool): The new toggle state.
Raises:
ValueError: If state is not a boolean.
"""
def get_toggle_state(self) -> bool:
"""
Get the current toggle state.
Returns:
bool: The current toggle state.
Raises:
RuntimeError: If the button is in an invalid state.
"""
def enable(self):
"""
Enable the button.
Raises:
RuntimeError: If the button is already enabled.
"""
def disable(self):
"""
Disable the button.
Raises:
RuntimeError: If the button is already disabled.
"""
def _update_fg_color(self):
"""
Update the foreground color based on the toggle state.
"""
Tchicdje Kouojip Joram Smith (DeltaGa)
Creator and developer of the CTkToggleButton and CTkToggleGroup classes.
Email: dev.github.tkjoramsmith@outlook.com GitHub: https://github.com/DeltaGa
CustomTkinter: The CustomTkinter library provided the foundation for building modern and customizable widgets in this project.
GitHub: https://github.com/TomSchimansky/CustomTkinter
Open Source Community: Inspiration and guidance from various open-source contributions and community members.
Python Community: For creating an ever-evolving ecosystem that empowers developers worldwide.
This project was developed with support and inspiration from state-of-the-art Large Language Models (LLMs), including but not limited to open/free-to-use models such as:
These models were instrumental in providing guidance, code refactoring suggestions, and improving the overall quality of the project documentation. Special thanks to the developers, researchers, and communities who have contributed to the field of natural language processing and made these models publicly available for everyone.
The integration of such tools demonstrates how artificial intelligence can augment human creativity and productivity in software development and beyond.
FAQs
A lightweight Python package for creating toggle buttons and groups using CustomTkinter.
We found that ctk-toggle demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
A phishing attack targeted developers using a typosquatted npm domain (npnjs.com) to steal credentials via fake login pages - watch out for similar scams.
Security News
Knip hits 500 releases with v5.62.0, refining TypeScript config detection and updating plugins as monthly npm downloads approach 12M.
Security News
The EU Cyber Resilience Act is prompting compliance requests that open source maintainers may not be obligated or equipped to handle.