Name | CTkMenuBarPlus JSON |
Version |
1.0
JSON |
| download |
home_page | None |
Summary | Modern menu bar widget library for customtkinter with enhanced features |
upload_time | 2025-08-09 15:53:09 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT License
Copyright (c) 2025 xzyqox
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
|
keywords |
customtkinter
menu
menubar
dropdown
gui
tkinter
accelerators
context-menu
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# CTkMenuBarPlus
Modern menu bar widget library for customtkinter with enhanced features.
## Features
- Custom dropdown menus with full customization
- Menu bar integration - add menus to window top or title bar
- Keyboard shortcuts/accelerators - layout-independent key bindings
- Icons in menu items - PNG, JPG, or PIL Image support
- Checkable menu items - toggle states with visual feedback
- Context menus - right-click dropdown support
- Scrollable menus - automatic scrollbars for long option lists
- Dynamic menu control - enable/disable items programmatically
- Platform support - cross-platform (Windows title menu Windows-only)
## Installation
```bash
pip install CTkMenuBarPlus
```
---
## Menu Types
## 1. CTkMenuBar

### Usage
```python
from CTkMenuBarPlus import *
import customtkinter as ctk
root = ctk.CTk()
menu_bar = CTkMenuBar(root)
file_button = menu_bar.add_cascade("File")
edit_button = menu_bar.add_cascade("Edit")
```
### Methods
- **.add_cascade(text, postcommand, kwargs)**: Add new menu button to the bar
- **.configure(kwargs)**: Update menu bar parameters
- **.cget(param)**: Get configuration parameter value
- **.show()**: Show the menu bar (if hidden)
- **.hide()**: Hide the menu bar
- **.toggle()**: Toggle menu bar visibility
### Arguments
| Parameter | Type | Description |
|-----------|------|-------------|
| **master** | Widget | Parent widget (root or frame) |
| **bg_color** | str/tuple | Background color (theme tuple or string) |
| **height** | int | Menu bar height in pixels (default: 25) |
| **width** | int | Menu button width in pixels (default: 10) |
| **padx** | int | Horizontal spacing between buttons (default: 5) |
| **pady** | int | Vertical padding (default: 2) |
| **postcommand** | callable | Function called before showing dropdown |
| ***other_args** | various | Additional CTkFrame parameters |
---
## 2. CTkTitleMenu
_Windows Only - integrates with window title bar_

### Usage
```python
from CTkMenuBarPlus import *
import customtkinter as ctk
root = ctk.CTk()
title_menu = CTkTitleMenu(root)
file_button = title_menu.add_cascade("File")
```
### Methods
- **.add_cascade(text, kwargs)**: Add menu button to title bar
- **.show()**: Show the title menu
- **.hide()**: Hide the title menu
- **.toggle()**: Toggle title menu visibility
### Arguments
| Parameter | Type | Description |
|-----------|------|----------------------------|
| **master** | CTk/CTkToplevel | Parent window (root or toplevel only) |
| **title_bar_color** | str/int | Title bar color ("default" for auto theme) |
| **padx** | int | Spacing between menu buttons (default: 10) |
| **width** | int | Width of menu buttons (default: 10) |
| **x_offset** | int | Horizontal position offset |
| **y_offset** | int | Vertical position offset |
---
## 3. CustomDropdownMenu
Core dropdown menu class with enhanced features - used by both CTkMenuBar and CTkTitleMenu.
### Usage
```python
from CTkMenuBarPlus import *
# Attach to any widget
dropdown = CustomDropdownMenu(widget=my_button)
dropdown.add_option("Option 1")
dropdown.add_separator()
submenu = dropdown.add_submenu("Submenu")
submenu.add_option("Sub Option")
```
### Enhanced Usage with New Features
```python
# Keyboard shortcuts
dropdown.add_option(
option="Open",
command=open_file,
accelerator="Ctrl+O"
)
# Checkable items
dropdown.add_option(
option="Word Wrap",
command=toggle_wrap,
checkable=True,
checked=True
)
# Icons in menu items
dropdown.add_option(
option="Save",
command=save_file,
icon="assets/save.png",
accelerator="Ctrl+S"
)
# Disabled items
dropdown.add_option(
option="Advanced Settings",
command=advanced_settings,
enabled=False
)
# Dynamic state control
option_button = dropdown.add_option("Toggle Me", checkable=True)
option_button.set_checked(True) # Set checked state
option_button.set_enabled(False) # Disable item
```
### Methods
- **.add_option(option, command, kwargs)**: Add menu option with enhanced features
- **.add_separator()**: Add visual separator line
- **.add_submenu(submenu_name, kwargs)**: Add nested submenu
- **.configure(kwargs)**: Update dropdown appearance
- **.cget(param)**: Get configuration parameter
- **.show()**: Show the dropdown menu
- **.hide()**: Hide the dropdown menu
- **.destroy()**: Clean up resources and destroy menu
### Arguments
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| **widget** | Widget | - | Widget that triggers this dropdown |
| **master** | Widget | None | Parent widget (auto-determined if None) |
| **border_width** | int | 1 | Border width in pixels |
| **width** | int | 150 | Menu width in pixels |
| **height** | int | 25 | Menu item height in pixels |
| **bg_color** | str/tuple | None | Background color |
| **corner_radius** | int | 10 | Corner radius for rounded corners |
| **border_color** | str/tuple | "grey50" | Border color |
| **separator_color** | str/tuple | ("grey80", "grey20") | Separator line color |
| **text_color** | str/tuple | ("black", "white") | Text color |
| **fg_color** | str/tuple | "transparent" | Foreground color |
| **hover_color** | str/tuple | ("grey75", "grey25") | Hover color |
| **font** | CTkFont | ("helvetica", 12) | Font for menu text |
| **padx** | int | 3 | Horizontal padding |
| **pady** | int | 3 | Vertical padding |
| **cursor** | str | "hand2" | Cursor type on hover |
| **max_visible_options** | int | 10 | Options before scrollbar appears |
| **enable_scrollbar** | bool | True | Enable scrollbar for long menus |
| **scrollbar_width** | int | 16 | Scrollbar width in pixels |
### add_option() Parameters
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| **option** | str | - | Text to display for this option |
| **command** | callable | None | Function to call when selected |
| **accelerator** | str | None | Keyboard shortcut (e.g., "Ctrl+S", "Alt+F4") |
| **icon** | str/PIL.Image | None | Icon file path or PIL Image object |
| **checkable** | bool | False | Whether item can be checked/unchecked |
| **checked** | bool | False | Initial checked state (if checkable=True) |
| **enabled** | bool | True | Whether item is initially enabled |
| ***kwargs** | various | - | Additional CTkButton styling options |
---
## 4. ContextMenu
Right-click context menu with full dropdown functionality.
### Usage
```python
from CTkMenuBarPlus import *
# Create context menu for any widget
context_menu = ContextMenu(my_widget)
context_menu.add_option("Copy", copy_function, accelerator="Ctrl+C")
context_menu.add_option("Paste", paste_function, accelerator="Ctrl+V")
context_menu.add_separator()
context_menu.add_option("Delete", delete_function, accelerator="Delete")
# Right-click will automatically show the menu
```
### Methods
Same as CustomDropdownMenu - inherits all functionality plus:
- **Automatic right-click binding** to target widget and children
- **Cursor-position display** - appears where you right-click
- **Full feature support** - accelerators, icons, checkable items, submenus
### Arguments
| Parameter | Type | Description |
|-----------|------|-------------|
| **widget** | CTkBaseClass | Widget to attach context menu to |
| ***kwargs** | various | All CustomDropdownMenu parameters supported |
---
## Theming
CTkMenuBarPlus automatically adapts to customtkinter appearance modes:
```python
# Light/Dark mode support
ctk.set_appearance_mode("dark") # "light" or "dark"
# Custom colors (theme tuples)
menu_bar = CTkMenuBar(
root,
bg_color=("white", "#2b2b2b"), # (light_mode, dark_mode)
)
dropdown = CustomDropdownMenu(
widget=button,
bg_color=("white", "#1a1a1a"),
text_color=("black", "white"),
hover_color=("lightblue", "#3a3a3a")
)
```
---
## Error Handling
The library includes comprehensive error handling:
```python
from CTkMenuBarPlus import MenuWidgetBindingError, MenuCommandExecutionError
try:
dropdown.add_option("Test", invalid_command)
except MenuCommandExecutionError as e:
print(f"Command error: {e}")
```
**Custom Exception Classes:**
- `CTkMenuBarError` - Base exception
- `MenuWidgetBindingError` - Widget binding issues
- `MenuCommandExecutionError` - Command execution problems
- `MenuToggleError` - Show/hide toggle failures
- `MenuOptionError` - Menu option operations
- `MenuIconError` - Icon loading/processing errors
- `MenuPositioningError` - Menu positioning failures
- `MenuScrollError` - Scrollable menu issues
---
## Advanced Features
### Scrollable Menus
Large menus automatically get scrollbars:
```python
dropdown = CustomDropdownMenu(
widget=button,
max_visible_options=5, # Show scrollbar after 5 items
enable_scrollbar=True,
scrollbar_width=16
)
```
### Keyboard Accelerators
Layout-independent shortcuts that work across keyboard layouts:
```python
# Supports: Ctrl, Alt, Shift, Cmd (macOS)
# Keys: A-Z, 0-9, Function keys, special keys
dropdown.add_option("Save", save_func, accelerator="Ctrl+S")
dropdown.add_option("Quit", quit_func, accelerator="Alt+F4")
```
### Dynamic Control
Control menu items programmatically:
```python
option = dropdown.add_option("Toggle", checkable=True)
# Later in your code:
option.set_checked(True) # Check the item
option.set_enabled(False) # Disable the item
option.toggle_checked() # Toggle check state
```
---
## Support & Issues
- **GitHub Issues**: [Report bugs or request features](https://github.com/KiTant/CTkMenuBarPlus/issues)
- **Discussions**: [Community support and questions](https://github.com/KiTant/CTkMenuBarPlus/discussions)
---
## Authors
- **Original Author**: [Akash Bora (Akascape)](https://github.com/Akascape) - CTkMenuBar
- **Enhanced Features**: [xzyqox (KiTant)](https://github.com/KiTant) - Accelerators, icons, checkable items, context menus, etc
- **Base Dropdown**: [LucianoSaldivia](https://github.com/LucianoSaldivia) - Original dropdown implementation
---
## License
This project is licensed under the MIT License.
---
Raw data
{
"_id": null,
"home_page": null,
"name": "CTkMenuBarPlus",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "xzyqox <xzyqox@gmail.com>",
"keywords": "customtkinter, menu, menubar, dropdown, gui, tkinter, accelerators, context-menu",
"author": null,
"author_email": "xzyqox <xzyqox@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/82/3c/d4164cf49e0d1162d6114a5f5a6a724a50cbfe2acc0e4f79b366d1331e07/ctkmenubarplus-1.0.tar.gz",
"platform": null,
"description": "# CTkMenuBarPlus\nModern menu bar widget library for customtkinter with enhanced features.\n\n## Features\n- Custom dropdown menus with full customization\n- Menu bar integration - add menus to window top or title bar\n- Keyboard shortcuts/accelerators - layout-independent key bindings\n- Icons in menu items - PNG, JPG, or PIL Image support\n- Checkable menu items - toggle states with visual feedback\n- Context menus - right-click dropdown support\n- Scrollable menus - automatic scrollbars for long option lists\n- Dynamic menu control - enable/disable items programmatically\n- Platform support - cross-platform (Windows title menu Windows-only)\n\n## Installation\n\n```bash\npip install CTkMenuBarPlus\n```\n\n---\n\n## Menu Types\n\n## 1. CTkMenuBar\n\n\n\n### Usage\n```python\nfrom CTkMenuBarPlus import *\nimport customtkinter as ctk\n\nroot = ctk.CTk()\nmenu_bar = CTkMenuBar(root)\nfile_button = menu_bar.add_cascade(\"File\")\nedit_button = menu_bar.add_cascade(\"Edit\")\n```\n\n### Methods\n- **.add_cascade(text, postcommand, kwargs)**: Add new menu button to the bar\n- **.configure(kwargs)**: Update menu bar parameters\n- **.cget(param)**: Get configuration parameter value\n- **.show()**: Show the menu bar (if hidden)\n- **.hide()**: Hide the menu bar\n- **.toggle()**: Toggle menu bar visibility\n\n### Arguments\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| **master** | Widget | Parent widget (root or frame) |\n| **bg_color** | str/tuple | Background color (theme tuple or string) |\n| **height** | int | Menu bar height in pixels (default: 25) |\n| **width** | int | Menu button width in pixels (default: 10) |\n| **padx** | int | Horizontal spacing between buttons (default: 5) |\n| **pady** | int | Vertical padding (default: 2) |\n| **postcommand** | callable | Function called before showing dropdown |\n| ***other_args** | various | Additional CTkFrame parameters |\n\n---\n\n## 2. CTkTitleMenu\n\n_Windows Only - integrates with window title bar_\n\n\n\n### Usage\n```python\nfrom CTkMenuBarPlus import *\nimport customtkinter as ctk\n\nroot = ctk.CTk()\ntitle_menu = CTkTitleMenu(root)\nfile_button = title_menu.add_cascade(\"File\")\n```\n\n### Methods\n- **.add_cascade(text, kwargs)**: Add menu button to title bar\n- **.show()**: Show the title menu\n- **.hide()**: Hide the title menu \n- **.toggle()**: Toggle title menu visibility\n\n### Arguments\n| Parameter | Type | Description |\n|-----------|------|----------------------------|\n| **master** | CTk/CTkToplevel | Parent window (root or toplevel only) |\n| **title_bar_color** | str/int | Title bar color (\"default\" for auto theme) |\n| **padx** | int | Spacing between menu buttons (default: 10) |\n| **width** | int | Width of menu buttons (default: 10) |\n| **x_offset** | int | Horizontal position offset |\n| **y_offset** | int | Vertical position offset |\n\n---\n\n## 3. CustomDropdownMenu\n\nCore dropdown menu class with enhanced features - used by both CTkMenuBar and CTkTitleMenu.\n\n### Usage\n```python\nfrom CTkMenuBarPlus import *\n\n# Attach to any widget\ndropdown = CustomDropdownMenu(widget=my_button)\ndropdown.add_option(\"Option 1\")\ndropdown.add_separator()\nsubmenu = dropdown.add_submenu(\"Submenu\")\nsubmenu.add_option(\"Sub Option\")\n```\n\n### Enhanced Usage with New Features\n```python\n# Keyboard shortcuts\ndropdown.add_option(\n option=\"Open\", \n command=open_file,\n accelerator=\"Ctrl+O\"\n)\n\n# Checkable items\ndropdown.add_option(\n option=\"Word Wrap\",\n command=toggle_wrap,\n checkable=True,\n checked=True\n)\n\n# Icons in menu items\ndropdown.add_option(\n option=\"Save\",\n command=save_file,\n icon=\"assets/save.png\",\n accelerator=\"Ctrl+S\"\n)\n\n# Disabled items\ndropdown.add_option(\n option=\"Advanced Settings\",\n command=advanced_settings,\n enabled=False\n)\n\n# Dynamic state control\noption_button = dropdown.add_option(\"Toggle Me\", checkable=True)\noption_button.set_checked(True) # Set checked state\noption_button.set_enabled(False) # Disable item\n```\n\n### Methods\n- **.add_option(option, command, kwargs)**: Add menu option with enhanced features\n- **.add_separator()**: Add visual separator line\n- **.add_submenu(submenu_name, kwargs)**: Add nested submenu\n- **.configure(kwargs)**: Update dropdown appearance\n- **.cget(param)**: Get configuration parameter\n- **.show()**: Show the dropdown menu\n- **.hide()**: Hide the dropdown menu\n- **.destroy()**: Clean up resources and destroy menu\n\n### Arguments\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| **widget** | Widget | - | Widget that triggers this dropdown |\n| **master** | Widget | None | Parent widget (auto-determined if None) |\n| **border_width** | int | 1 | Border width in pixels |\n| **width** | int | 150 | Menu width in pixels |\n| **height** | int | 25 | Menu item height in pixels |\n| **bg_color** | str/tuple | None | Background color |\n| **corner_radius** | int | 10 | Corner radius for rounded corners |\n| **border_color** | str/tuple | \"grey50\" | Border color |\n| **separator_color** | str/tuple | (\"grey80\", \"grey20\") | Separator line color |\n| **text_color** | str/tuple | (\"black\", \"white\") | Text color |\n| **fg_color** | str/tuple | \"transparent\" | Foreground color |\n| **hover_color** | str/tuple | (\"grey75\", \"grey25\") | Hover color |\n| **font** | CTkFont | (\"helvetica\", 12) | Font for menu text |\n| **padx** | int | 3 | Horizontal padding |\n| **pady** | int | 3 | Vertical padding |\n| **cursor** | str | \"hand2\" | Cursor type on hover |\n| **max_visible_options** | int | 10 | Options before scrollbar appears |\n| **enable_scrollbar** | bool | True | Enable scrollbar for long menus |\n| **scrollbar_width** | int | 16 | Scrollbar width in pixels |\n\n### add_option() Parameters\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| **option** | str | - | Text to display for this option |\n| **command** | callable | None | Function to call when selected |\n| **accelerator** | str | None | Keyboard shortcut (e.g., \"Ctrl+S\", \"Alt+F4\") |\n| **icon** | str/PIL.Image | None | Icon file path or PIL Image object |\n| **checkable** | bool | False | Whether item can be checked/unchecked |\n| **checked** | bool | False | Initial checked state (if checkable=True) |\n| **enabled** | bool | True | Whether item is initially enabled |\n| ***kwargs** | various | - | Additional CTkButton styling options |\n\n---\n\n## 4. ContextMenu\n\nRight-click context menu with full dropdown functionality.\n\n### Usage\n```python\nfrom CTkMenuBarPlus import *\n\n# Create context menu for any widget\ncontext_menu = ContextMenu(my_widget)\ncontext_menu.add_option(\"Copy\", copy_function, accelerator=\"Ctrl+C\")\ncontext_menu.add_option(\"Paste\", paste_function, accelerator=\"Ctrl+V\")\ncontext_menu.add_separator()\ncontext_menu.add_option(\"Delete\", delete_function, accelerator=\"Delete\")\n\n# Right-click will automatically show the menu\n```\n\n### Methods\nSame as CustomDropdownMenu - inherits all functionality plus:\n- **Automatic right-click binding** to target widget and children\n- **Cursor-position display** - appears where you right-click\n- **Full feature support** - accelerators, icons, checkable items, submenus\n\n### Arguments\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| **widget** | CTkBaseClass | Widget to attach context menu to |\n| ***kwargs** | various | All CustomDropdownMenu parameters supported |\n\n---\n\n## Theming\n\nCTkMenuBarPlus automatically adapts to customtkinter appearance modes:\n\n```python\n# Light/Dark mode support\nctk.set_appearance_mode(\"dark\") # \"light\" or \"dark\"\n\n# Custom colors (theme tuples)\nmenu_bar = CTkMenuBar(\n root,\n bg_color=(\"white\", \"#2b2b2b\"), # (light_mode, dark_mode)\n)\n\ndropdown = CustomDropdownMenu(\n widget=button,\n bg_color=(\"white\", \"#1a1a1a\"),\n text_color=(\"black\", \"white\"),\n hover_color=(\"lightblue\", \"#3a3a3a\")\n)\n```\n\n---\n\n## Error Handling\n\nThe library includes comprehensive error handling:\n\n```python\nfrom CTkMenuBarPlus import MenuWidgetBindingError, MenuCommandExecutionError\n\ntry:\n dropdown.add_option(\"Test\", invalid_command)\nexcept MenuCommandExecutionError as e:\n print(f\"Command error: {e}\")\n```\n\n**Custom Exception Classes:**\n- `CTkMenuBarError` - Base exception\n- `MenuWidgetBindingError` - Widget binding issues\n- `MenuCommandExecutionError` - Command execution problems \n- `MenuToggleError` - Show/hide toggle failures\n- `MenuOptionError` - Menu option operations\n- `MenuIconError` - Icon loading/processing errors\n- `MenuPositioningError` - Menu positioning failures\n- `MenuScrollError` - Scrollable menu issues\n\n---\n\n## Advanced Features\n\n### Scrollable Menus\nLarge menus automatically get scrollbars:\n```python\ndropdown = CustomDropdownMenu(\n widget=button,\n max_visible_options=5, # Show scrollbar after 5 items\n enable_scrollbar=True,\n scrollbar_width=16\n)\n```\n\n### Keyboard Accelerators\nLayout-independent shortcuts that work across keyboard layouts:\n```python\n# Supports: Ctrl, Alt, Shift, Cmd (macOS)\n# Keys: A-Z, 0-9, Function keys, special keys\ndropdown.add_option(\"Save\", save_func, accelerator=\"Ctrl+S\")\ndropdown.add_option(\"Quit\", quit_func, accelerator=\"Alt+F4\")\n```\n\n### Dynamic Control\nControl menu items programmatically:\n```python\noption = dropdown.add_option(\"Toggle\", checkable=True)\n\n# Later in your code:\noption.set_checked(True) # Check the item\noption.set_enabled(False) # Disable the item\noption.toggle_checked() # Toggle check state\n```\n\n---\n\n## Support & Issues\n\n- **GitHub Issues**: [Report bugs or request features](https://github.com/KiTant/CTkMenuBarPlus/issues)\n- **Discussions**: [Community support and questions](https://github.com/KiTant/CTkMenuBarPlus/discussions)\n\n---\n\n## Authors\n\n- **Original Author**: [Akash Bora (Akascape)](https://github.com/Akascape) - CTkMenuBar \n- **Enhanced Features**: [xzyqox (KiTant)](https://github.com/KiTant) - Accelerators, icons, checkable items, context menus, etc\n- **Base Dropdown**: [LucianoSaldivia](https://github.com/LucianoSaldivia) - Original dropdown implementation\n\n---\n\n## License\n\nThis project is licensed under the MIT License.\n\n---\n",
"bugtrack_url": null,
"license": "MIT License\n \n Copyright (c) 2025 xzyqox\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n ",
"summary": "Modern menu bar widget library for customtkinter with enhanced features",
"version": "1.0",
"project_urls": {
"Documentation": "https://github.com/KiTant/CTkMenuBarPlus#readme",
"Homepage": "https://github.com/KiTant/CTkMenuBarPlus",
"Issues": "https://github.com/KiTant/CTkMenuBarPlus/issues",
"Repository": "https://github.com/KiTant/CTkMenuBarPlus"
},
"split_keywords": [
"customtkinter",
" menu",
" menubar",
" dropdown",
" gui",
" tkinter",
" accelerators",
" context-menu"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b0e1f88df79da027a41ee222069fa834f1f406804c3aef457c9e3243a5a160d1",
"md5": "876fe25df4a2a27767feeba1f7dec0f2",
"sha256": "7c0b2e906a93d4ea98dc5b7932b624c35fa54831092b6f8b0bbac12f946f56ef"
},
"downloads": -1,
"filename": "ctkmenubarplus-1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "876fe25df4a2a27767feeba1f7dec0f2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 31560,
"upload_time": "2025-08-09T15:53:07",
"upload_time_iso_8601": "2025-08-09T15:53:07.685291Z",
"url": "https://files.pythonhosted.org/packages/b0/e1/f88df79da027a41ee222069fa834f1f406804c3aef457c9e3243a5a160d1/ctkmenubarplus-1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "823cd4164cf49e0d1162d6114a5f5a6a724a50cbfe2acc0e4f79b366d1331e07",
"md5": "06a65dba103d6b7c435a55cf9d61646f",
"sha256": "0ab36a291d533f5e4ae405d6d3c2b153f49cd6a2016e8ddfcb2e835ade258beb"
},
"downloads": -1,
"filename": "ctkmenubarplus-1.0.tar.gz",
"has_sig": false,
"md5_digest": "06a65dba103d6b7c435a55cf9d61646f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 28929,
"upload_time": "2025-08-09T15:53:09",
"upload_time_iso_8601": "2025-08-09T15:53:09.106190Z",
"url": "https://files.pythonhosted.org/packages/82/3c/d4164cf49e0d1162d6114a5f5a6a724a50cbfe2acc0e4f79b366d1331e07/ctkmenubarplus-1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-09 15:53:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "KiTant",
"github_project": "CTkMenuBarPlus#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ctkmenubarplus"
}