CTkScrollableDropdownPP
CTkScrollableDropdownPP is an enhanced dropdown widget for CustomTkinter featuring pagination, live search, grouping support, and multiple selection.
Based on the original CTkScrollableDropdown project.
Features
- Pagination for large lists
- Real-time filtering
- Grouped items (using regex or labels)
- Autocomplete on typing
- Multiple selection support
- Fully customizable appearance
Installation
pip install ctkscrollabledropdownpp
Example
import customtkinter
from PIL import Image, ImageDraw
from CTkScrollableDropdownPP import CTkScrollableDropdown
import io
def create_color_image(color, width=20, height=20):
"""Create an image of the specified color"""
img = Image.new('RGBA', (width, height), (0, 0, 0, 0))
draw = ImageDraw.Draw(img)
draw.rectangle((0, 0, width - 1, height - 1), fill=color)
img_bytes = io.BytesIO()
img.save(img_bytes, format='PNG')
img_bytes.seek(0)
return customtkinter.CTkImage(Image.open(img_bytes), size=(width, height))
def create_number_image(number, width=20, height=20):
"""Create an image with a digit"""
img = Image.new('RGBA', (width, height), (0, 0, 0, 0))
draw = ImageDraw.Draw(img)
draw.rectangle((0, 0, width - 1, height - 1), fill="#FFFFFF")
draw.text((width // 2, height // 2), str(number), fill="#000000", anchor="mm")
img_bytes = io.BytesIO()
img.save(img_bytes, format='PNG')
img_bytes.seek(0)
return customtkinter.CTkImage(Image.open(img_bytes), size=(width, height))
# Create main window
root = customtkinter.CTk()
root.geometry("500x400")
# Create CTkComboBox
combobox = customtkinter.CTkComboBox(root, width=250)
combobox.pack(pady=50)
# Data for dropdown list
colors = {
"Red": "#FF0000",
"Green": "#00FF00",
"Blue": "#0000FF",
"Yellow": "#FFFF00",
"Orange": "#FFA500",
"Purple": "#800080",
"Pink": "#FFC0CB",
"Brown": "#A52A2A",
"Black": "#000000",
"White": "#FFFFFF"
}
numbers = [str(i) for i in range(10)] # Digits from 0 to 9
# Create lists of values and images
color_values = list(colors.keys())
color_images = [create_color_image(color_code) for color_code in colors.values()]
number_values = numbers
number_images = [create_number_image(num) for num in numbers]
# Combine all values and images
all_values = color_values + number_values
all_images = color_images + number_images
# Groups for sorting
groups = [
["Numbers", "^[0-9]$"],
["Colors", "__OTHERS__"]
]
# Create dropdown list
dropdown = CTkScrollableDropdown(attach=combobox, button_color="#2b2b2b", height=200, width=300, fg_color="#333333",
values=all_values, command=lambda value: print(f"Selected: {value}"),
image_values=all_images, text_color="#ffffff", hover_color="#3a3a3a",
font=("Arial", 12), groups=groups, items_per_page=10, multiple=True)
root.mainloop()
Metadata
Release files for CTkScrollableDropdownPP 2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ctkscrollabledropdownpp-2.4.tar.gz | 9.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ctkscrollabledropdownpp-2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.6 kB
Release files / ctkscrollabledropdownpp-2.4.tar.gz
| Download URL | ctkscrollabledropdownpp-2.4.tar.gz |
|---|---|
| Size | 9.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3b9d205a81debaa47a284be9afa093bc58d12f0ff80d2d88d5da1bed0f7bb0a1
|
|
BLAKE2b-256 checksum How to use checksums |
de60dacab1eb6d511237cdd057e418f42b6336a212de9d1db4ba619b350ec60b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / ctkscrollabledropdownpp-2.4-py3-none-any.whl
| Download URL | ctkscrollabledropdownpp-2.4-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da85a2dcd811700cbbb2e1aaef4633efcebcdf6fc70f79071c8d13cbb267a2c2
|
|
BLAKE2b-256 checksum How to use checksums |
68cb95d89773259e26f1b97b6b32d1307ba44bc16b78c9df1831a8f9e4af331b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|