├── .github
├── DISCUSSION_TEMPLATE
│ └── Add-this.yml
├── FUNDING.yml
└── workflows
│ └── static.yml
├── .gitignore
├── LICENSE
├── README.md
├── assets
├── database.json
├── logo.png
├── pkg.png
├── star.png
└── tk.png
├── index.html
├── requirements.txt
└── tkinter-toolkit.py
/.github/DISCUSSION_TEMPLATE/Add-this.yml:
--------------------------------------------------------------------------------
1 | title: "Project Name"
2 | labels: ["Add new library"]
3 | body:
4 | - type: markdown
5 | attributes:
6 | value: |
7 | Please complete this form:
8 | - type: input
9 | id: url
10 | attributes:
11 | label: Repository URL
12 | validations:
13 | required: true
14 | - type: textarea
15 | id: desc
16 | attributes:
17 | label: Description
18 | description: "Write a short but good description of your project!"
19 | render: bash
20 | validations:
21 | required: true
22 | - type: textarea
23 | id: highlights
24 | attributes:
25 | label: Highlights
26 | description: "Write some useful features of your project"
27 | value: |
28 | 1.
29 | 2.
30 | 3.
31 | 4.
32 | 5.
33 | ...
34 | render: bash
35 | validations:
36 | required: true
37 | - type: input
38 | id: author
39 | attributes:
40 | label: Author Name
41 | description: "realname or username"
42 | validations:
43 | required: true
44 | - type: input
45 | id: preview
46 | attributes:
47 | label: Preview Image URL
48 | description: "Upload the image to github and paste the link here"
49 | validations:
50 | required: false
51 | - type: dropdown
52 | id: pip
53 | attributes:
54 | label: Is the project uploaded to pypi/pip?
55 | options:
56 | - 'Yes'
57 | - 'No'
58 | validations:
59 | required: true
60 | - type: dropdown
61 | id: type
62 | attributes:
63 | label: Project Type?
64 | options:
65 | - 'Tkinter based'
66 | - 'CustomTkinter based'
67 | - 'Tool/utility'
68 | validations:
69 | required: true
70 | - type: checkboxes
71 | attributes:
72 | label: CheckList
73 | options:
74 | - label: The project has proper documentation
75 | required: false
76 | - label: The project is in working condition
77 | required: true
78 | - type: markdown
79 | attributes:
80 | value: |
81 | ### That's it!
82 | _This form will be checked soon..._
83 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | ko_fi: akascape
4 |
5 |
--------------------------------------------------------------------------------
/.github/workflows/static.yml:
--------------------------------------------------------------------------------
1 | # Simple workflow for deploying static content to GitHub Pages
2 | name: Deploy static content to Pages
3 |
4 | on:
5 | # Runs on pushes targeting the default branch
6 | push:
7 | branches: ["main"]
8 |
9 | # Allows you to run this workflow manually from the Actions tab
10 | workflow_dispatch:
11 |
12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13 | permissions:
14 | contents: read
15 | pages: write
16 | id-token: write
17 |
18 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20 | concurrency:
21 | group: "pages"
22 | cancel-in-progress: false
23 |
24 | jobs:
25 | # Single deploy job since we're just deploying
26 | deploy:
27 | environment:
28 | name: github-pages
29 | url: ${{ steps.deployment.outputs.page_url }}
30 | runs-on: ubuntu-latest
31 | steps:
32 | - name: Checkout
33 | uses: actions/checkout@v4
34 | - name: Setup Pages
35 | uses: actions/configure-pages@v5
36 | - name: Upload artifact
37 | uses: actions/upload-pages-artifact@v3
38 | with:
39 | # Upload entire repository
40 | path: '.'
41 | - name: Deploy to GitHub Pages
42 | id: deployment
43 | uses: actions/deploy-pages@v4
44 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | env
2 | __pycache__
3 |
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Akash Bora
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |

5 |
Tkinter-Toolkit
6 |
7 |
8 | Tkinter is a great library for UI development in python. Specially the canvas widget of tkinter lets you make any custom widget you want. If you are planning to create a new piece of software or want to implement a GUI for your python scripts, then tkinter is still one of the best options out there. Moreover, after the arrival of [**`customtkinter`**](https://github.com/TomSchimansky/CustomTkinter), it is super easy to create a modern user-friendly UI. The community is also very kind and helpful. Also note that both customtkinter and tkinter libraries can be used together in one project.
9 |
10 |
11 | **Tkinter-Toolkit is a small application that helps you find tkinter/customtkinter widget libraries and useful tools created by some awesome people.** There are lots of libraries listed in this application. So start exploring them one by one and develop great projects!
12 |
13 |
14 |
15 | [

](https://github.com/Akascape/tkinter-toolkit/archive/refs/heads/main.zip)
16 |
17 | *Requirements: `customtkinter` and `PIL`,*
18 | *Don't forget to leave a* ⭐, it helps in sharing this repository.
19 |
20 |
21 | ## Features
22 | - Explore new tkinter/customtkinter addon libraries
23 | - Experience a better UI development with tkinter
24 | - Installation links are provided
25 | - Preview images of the UI libraries
26 | - Detailed descriptions provided
27 | - Update database and view new packages if available
28 | - Share your own tkinter libraries
29 |
30 | ## Screenshots
31 | 
32 | 
33 | 
34 |
35 | Note: This app is not a download manager for the libaries, it just shows the collection of those libraries which you can view and install manually. **All the official author names, repository links and description are written in the database. (_Any type of changes in the database is possible if required_)**
36 |
37 | Hope it will help tkinter users and also the respected repository owners.
38 |
39 | _Share any new tkinter-based widget libraries you've found or created!_
40 |
41 | [
](https://github.com/Akascape/tkinter-toolkit/discussions/new?category=add-this)
42 | [
](https://docs.python.org/3/library/tkinter.html)
43 | [
](https://github.com/Akascape/tkinter-toolkit/blob/main/LICENSE)
44 |
--------------------------------------------------------------------------------
/assets/database.json:
--------------------------------------------------------------------------------
1 | {
2 | "CustomTkinter": {
3 | "name": "customtkinter",
4 | "type": "pip",
5 | "icon": "ctk",
6 | "desc": "Modern UI Library",
7 | "full_desc": "CustomTkinter is a python UI-library based on Tkinter, which provides new, modern and fully customizable widgets. They are created and used like normal Tkinter widgets and can also be used in combination with normal Tkinter elements. The widgets and the window colors either adapt to the system appearance or the manually set mode ('light', 'dark'), and all CustomTkinter widgets and windows support HighDPI scaling (Windows, macOS). With CustomTkinter you'll get a consistent and modern look across all desktop platforms (Windows, macOS, Linux).",
8 | "author": "TomSchimansky",
9 | "highlights": ["Fully customisable widget", "CTkButton", "CTkEntry", "CTkComboBox", "CTkFrame", "CTkToplevel", "CTkLabel", "CTkScrollableFrame", "CTkSlider", "CTkTabview", "CTkSwitch", "CTkTextbox", "And more..."],
10 | "repo_url": "https://github.com/TomSchimansky/CustomTkinter",
11 | "image_url": "https://raw.githubusercontent.com/TomSchimansky/CustomTkinter/master/documentation_images/complex_example_dark_Windows.png",
12 | "installation": "pip install customtkinter",
13 | "tags": ["customtkinter", "tkinter", "ctk", "frame", "toplevel", "combobox","slider","progressbar","text","button","entry","label"]
14 | },
15 |
16 | "CTkMessagebox": {
17 | "name": "ctkmessagebox",
18 | "type": "pip",
19 | "icon": "ctk",
20 | "desc": "Messagebox for CTk",
21 | "full_desc": "A modern and fully customizable messagebox for customtkinter.",
22 | "author": "Akascape",
23 | "highlights": ["Add custom icons or images", "Add multiple options according to your wish","Comes with 5 default icons","Spawns at center of the screen/app","No ugly looking header or borders","Fade-in/Fade-out window effect"],
24 | "repo_url": "https://github.com/Akascape/CTkMessagebox",
25 | "image_url": "https://user-images.githubusercontent.com/89206401/221258593-75058878-b598-40c3-828a-1d44a6cefb73.jpg",
26 | "installation": "pip install CTkMessagebox",
27 | "tags": ["ctkmessagebox","customtkinter", "messagebox", "box","info","icons","popup"]
28 | },
29 |
30 | "CTkColorPicker": {
31 | "name": "ctkcolorpicker",
32 | "type": "pip",
33 | "icon": "ctk",
34 | "desc": "Color picker for CTk",
35 | "full_desc": "A modern color picker made for customtkinter!",
36 | "author": "Akascape",
37 | "highlights": ["color picker window", "color picker widget", "set initial color [beta stage]"],
38 | "repo_url": "https://github.com/Akascape/CTkColorPicker",
39 | "image_url": "https://user-images.githubusercontent.com/89206401/209182773-d76bf05c-610e-4297-aec5-7bb61a11d6d3.jpg",
40 | "installation": "pip install CTkColorPicker",
41 | "tags": ["ctkcolorpicker","customtkinter", "colorpicker", "colors", "picker","color chooser"]
42 | },
43 |
44 | "CTkTable": {
45 | "name": "ctktable",
46 | "type": "pip",
47 | "icon": "ctk",
48 | "desc": "Table widget for CTk",
49 | "full_desc": "A quick and simple table widget having all the basic features.",
50 | "author": "Akascape",
51 | "highlights": ["Add/Edit/Delete rows and columns", "Insert values to cells", "Update values in cells", "add commands"],
52 | "repo_url": "https://github.com/Akascape/CTkTable",
53 | "image_url": "https://user-images.githubusercontent.com/89206401/233420929-bf210cb3-5b5f-49b2-ba7a-f01d187e72cf.jpg",
54 | "installation": "pip install CTkTable",
55 | "tags": ["ctktable","customtkinter", "table", "treeview", "tabular","data"]
56 | },
57 |
58 | "CTkTooltip": {
59 | "name": "ctktooltip",
60 | "type": "pip",
61 | "icon": "ctk",
62 | "desc": "Tooltip for CTk",
63 | "full_desc": "Small tooltip pop-up label for displaying details on customtkinter widgets.",
64 | "author": "Akascape",
65 | "highlights": ["Display over any widget", "Round corners", "Transparency effects", "Show live values"],
66 | "repo_url": "https://github.com/Akascape/CTkToolTip",
67 | "image_url": "https://user-images.githubusercontent.com/89206401/242210130-7c39fd9a-32bc-4ed3-b33a-575572d9ae66.jpg",
68 | "installation": "pip install CTkToolTip",
69 | "tags": ["ctktooltip","customtkinter", "tooltips", "tips", "popup"]
70 | },
71 |
72 | "CTkScrollableDropdown": {
73 | "name": "ctkscrollabledropdown",
74 | "type": "manual",
75 | "icon": "ctk",
76 | "desc": "DropdownMenu widget for combobox and optionmenus",
77 | "full_desc": "Replace the old looking tkMenu and add this new scrollable dropdown menu to customtkinter optionmenu, combobox, entries, buttons etc...",
78 | "author": "Akascape",
79 | "highlights": ["Round corners", "Define custom height for the menu", "Automatic resize", "Autocomplete options"],
80 | "repo_url": "https://github.com/Akascape/CTkScrollableDropdown",
81 | "image_url": "https://user-images.githubusercontent.com/89206401/236677843-8d8b76fd-6145-47b1-8f4d-b6a64b08e1ea.png",
82 | "installation": "https://github.com/Akascape/CTkScrollableDropdown",
83 | "tags": ["ctkscrollabledropdown","customtkinter", "menu", "dropdownmenu"]
84 | },
85 |
86 | "CTkRangeSlider": {
87 | "name": "ctkrangeslider",
88 | "type": "manual",
89 | "icon": "ctk",
90 | "desc": "Range slider widget for CTk",
91 | "full_desc": "A range slider widget made for customtkinter.",
92 | "author": "Akascape",
93 | "highlights": ["Works just like CTkSlider", "Dual headed slider", "Separate commands", "All customisability"],
94 | "repo_url": "https://github.com/Akascape/CTkRangeSlider",
95 | "image_url": "https://user-images.githubusercontent.com/89206401/229349732-0e078b00-f2b7-46e7-9774-313090253769.jpg",
96 | "installation": "https://github.com/Akascape/CTkRangeSlider",
97 | "tags": ["ctkrangeslider","customtkinter", "slider", "rangeslider", "dual","range slider"]
98 | },
99 |
100 | "CTkMenuBar": {
101 | "name": "ctkmenubar",
102 | "type": "pip",
103 | "icon": "ctk",
104 | "desc": "Custom Toolbar widget",
105 | "full_desc": "Modern menu bar widget library for customtkinter.",
106 | "author": "Akascape",
107 | "highlights": ["Modern dropdown menu", "Add submenus", "Menu in title bar", "Add cascades", "Add separators"],
108 | "repo_url": "https://github.com/Akascape/CTkMenuBar",
109 | "image_url": "https://user-images.githubusercontent.com/89206401/241711282-02c512b2-557f-4d59-86e0-a6eb9da3696c.png",
110 | "installation": "pip install CTkMenuBar",
111 | "tags": ["ctkmenubar","menubar", "titlebar", "dropdownmenu","toolbar"]
112 | },
113 |
114 | "CTkPopupKeyboard":{
115 | "name": "ctkpopupkeyboard",
116 | "type": "manual",
117 | "icon": "ctk",
118 | "desc": "On-Screen Keyboard/Numpad widget",
119 | "full_desc": "On-Screen Keyboard/Numpad widget for customtkinter entries and textbox.",
120 | "author": "Akascape",
121 | "highlights": ["Custom keyboard and numpad", "All key characters", "Transparency effects"],
122 | "repo_url": "https://github.com/Akascape/CTkPopupKeyboard",
123 | "image_url": "https://user-images.githubusercontent.com/89206401/236622957-5e140b42-eeaa-41de-aeb3-a6d95d3023b1.png",
124 | "installation": "https://github.com/Akascape/CTkPopupKeyboard",
125 | "tags": ["ctkpopupkeyboard","popup","keyboard", "numpad", "popupkeyboard","on screen"]
126 | },
127 |
128 | "TkDial": {
129 | "name": "tkdial",
130 | "type": "pip",
131 | "icon": "tk",
132 | "desc": "Dial/Knob widget library",
133 | "full_desc": "This is a library containing some circular rotatory dial-knob widgets for Tkinter. It can be used in place of normal sliders and scale.",
134 | "author": "Akascape",
135 | "highlights": ["Dial widget", "Meter widget", "Circular Progressbar", "Knob widget", "Custom image knobs"],
136 | "repo_url": "https://github.com/Akascape/TkDial",
137 | "image_url": "https://user-images.githubusercontent.com/89206401/204718389-d3195b3b-0f7a-41c3-85b8-ffc1d961db70.png",
138 | "installation": "pip install tkdial",
139 | "tags": ["tkdial","knob","dial", "circular", "sliders","meter"]
140 | },
141 |
142 | "TkNodeSystem": {
143 | "name": "tknodesystem",
144 | "type": "pip",
145 | "icon": "tk",
146 | "desc": "Visual node-based UI",
147 | "full_desc": "TkNodeSystem is a nodal-interface, basically a DAG where each node performs an operation on it's input connections, and outputs something (which you can connect to another node). \nIt can be used to implement flow-based operations in your application. It can be used with tkinter or customtkinter easily as it is created with tkinter canvas.",
148 | "author": "Akascape",
149 | "highlights": ["Implement node-based UI", "Save/Load node trees", "Multiple node types", "Custom operations", "Built-in Node menu","Drag and zoom canvas"],
150 | "repo_url": "https://github.com/Akascape/TkNodeSystem",
151 | "image_url": "https://user-images.githubusercontent.com/89206401/238861383-a84cb60a-cc6f-4609-8452-3ff4fcd0c46b.png",
152 | "installation": "pip install tknodesystem",
153 | "tags": ["nodes", "dag", "tknodes", "tkinter", "tknodesystem","visual","node system"]
154 | },
155 |
156 | "CTkThemeMaker": {
157 | "name": "ctkthememaker",
158 | "type": "manual",
159 | "icon": "pkg",
160 | "desc": "Lite theme maker of CTk",
161 | "full_desc": "A quick and easy theme builder for customtkinter!",
162 | "author": "Akascape",
163 | "highlights": ["Create custom themes", "Save/Load themes", "Quick test themes", "No extra installation"],
164 | "repo_url": "https://github.com/Akascape/CTkThemeMaker",
165 | "image_url": "https://user-images.githubusercontent.com/89206401/216785762-7277326d-3a87-4e01-aae3-302af1e5ec3a.jpg",
166 | "installation": "https://github.com/Akascape/CTkThemeMaker",
167 | "tags": ["themes", "thememaker", "customtkinter", "customtkinter themes", "colors"]
168 | },
169 |
170 | "CTkDesigner": {
171 | "name": "ctkdesigner",
172 | "type": "manual",
173 | "icon": "pkg",
174 | "desc": "Easy GUI designer for CTk",
175 | "full_desc": "No code window designer for customtkinter, just drag and drop and save your time.",
176 | "author": "Akascape",
177 | "highlights": ["DRAG & DROP widgets", "Move widgets with mouse", "Adjust all parameters", "Precise place method", "13 CTk widgets", "Create and preview themes", "Export app to .py", "Save/Open created templates", "All required functionalities and shortcuts added"],
178 | "repo_url": "https://github.com/Akascape/CTkDesigner-Support",
179 | "image_url": "https://github.com/Akascape/CTkDesigner-Support/assets/89206401/6435f49b-f7d0-4cba-8190-73cd71d77ac3",
180 | "installation": "https://github.com/Akascape/CTkDesigner-Support",
181 | "tags": ["themes", "ctkdesigner", "customtkinter", "draganddrop", "designer", "automatic", "WYSIWYG", "guidesign"]
182 | },
183 |
184 | "CTkThemeBuilder": {
185 | "name": "ctkthemebuilder",
186 | "type": "manual",
187 | "icon": "pkg",
188 | "desc": "Advanced theme maker of CTk",
189 | "full_desc": "CTk Theme Builder provides a WYSIWYG interface for creating and maintaining CustomTkinter themes.",
190 | "author": "Clive Bostock",
191 | "highlights": ["Create custom themes", "Adjust all colors and properties", "Save/Load themes", "See live preview of the theme", "Color palletes", "Advanced tools included"],
192 | "repo_url": "https://github.com/avalon60/ctk_theme_builder",
193 | "image_url": "https://raw.githubusercontent.com/avalon60/ctk_theme_builder/develop/docs/CTkThemeBuilder-about.png",
194 | "installation": "https://github.com/avalon60/ctk_theme_builder/releases",
195 | "tags": ["themes", "thememaker", "customtkinter", "customtkinter themes", "colors", "themebuilder", "build"]
196 | },
197 |
198 | "TkVideoPlayer": {
199 | "name": "tkvideoplayer",
200 | "type": "pip",
201 | "icon": "tk",
202 | "desc": "Video player widget",
203 | "full_desc": "This is a simple library to play video files in tkinter. This library also provides the ability to play, pause, skip and seek to specific timestamps.",
204 | "author": "PaulleDemon",
205 | "highlights": ["Video player widget", "Seek to timestamps", "Play/Pause videos", "Resizable frame"],
206 | "repo_url": "https://github.com/PaulleDemon/tkVideoPlayer",
207 | "image_url": "https://user-images.githubusercontent.com/89206401/196894602-d756d46c-4871-4a2f-b5cb-4b6ac1665c29.jpg",
208 | "installation": "pip install tkvideoplayer",
209 | "tags": ["videoplayer", "video player", "tkvideoplayer", "label"]
210 | },
211 |
212 | "TkChart": {
213 | "name": "tkchart",
214 | "type": "pip",
215 | "icon": "ctk",
216 | "desc": "Chart widget for Tk",
217 | "full_desc": "Create charts in tkinter windows!",
218 | "author": "Thisal-D",
219 | "highlights": ["plot graph easily", "configure graph data", "animated graph", "fully customisable", "lightweight library"],
220 | "repo_url": "https://github.com/Thisal-D/tkchart",
221 | "image_url": "https://user-images.githubusercontent.com/93121062/204732876-1d3f7526-93ea-4e5e-905b-b768020fd572.png",
222 | "installation": "pip install tkchart",
223 | "tags": ["tkchart","ctkchart", "chart", "graph", "plot", "line chart"]
224 | },
225 |
226 | "CTkDataVisualizingWidgets": {
227 | "name": "ctkdatavisualizingwidgets",
228 | "type": "manual",
229 | "icon": "ctk",
230 | "desc": "Custom calendar, graph and chart widgets",
231 | "full_desc": "A library focused on displaying data related operations.",
232 | "author": "ZikPin",
233 | "highlights": ["Modern Calendar widget", "Chart widget", "Graph widgets", "Fully customizable"],
234 | "repo_url": "https://github.com/ZikPin/CTkDataVisualizingWidgets",
235 | "image_url": "https://user-images.githubusercontent.com/65452275/255221043-e40ea973-77d0-42c4-b740-535c15ad5748.png",
236 | "installation": "https://github.com/ZikPin/CTkDataVisualizingWidgets",
237 | "tags": ["calendar", "chart", "graph", "data visualizing", "ctkdatavisualizingwidgets", "widgets"]
238 | },
239 |
240 | "CTkRadarChart": {
241 | "name": "ctkradarchart",
242 | "type": "manual",
243 | "icon": "ctk",
244 | "desc": "Radar chart for CTk",
245 | "full_desc": "A radar chart widget for customtkinter, data visualizing widget.",
246 | "author": "Akascape",
247 | "highlights": ["Visualise data in a radar chart", "Fully customisable","Resizable widget"],
248 | "repo_url": "https://github.com/Akascape/CTkRadarChart",
249 | "image_url": "https://github.com/Akascape/CTkRadarChart/assets/89206401/0d3ecda5-f73d-4d27-b7d7-817cf42905ec",
250 | "installation": "https://github.com/Akascape/CTkRadarChart",
251 | "tags": ["ctkradarchart","radarchart", "spiderchart", "webchart","polarchart","radialchart","chart","graph"]
252 | },
253 |
254 | "CTkPieChart": {
255 | "name": "ctkpiechart",
256 | "type": "manual",
257 | "icon": "ctk",
258 | "desc": "Pie chart for CTk",
259 | "full_desc": "A pie chart widget for customtkinter, data visualizing widget.",
260 | "author": "Akascape",
261 | "highlights": ["Visualise data in a pie chart", "Fully customisable", "Automatic calculations", "No sharp edges"],
262 | "repo_url": "https://github.com/Akascape/CTkPieChart",
263 | "image_url": "https://github.com/Akascape/CTkPieChart/assets/89206401/2632a3f0-bf79-40ec-a3a1-bf5252d571b9",
264 | "installation": "https://github.com/Akascape/CTkPieChart",
265 | "tags": ["ctkpiechart","piechart", "piegraph", "circle","chart","graph"]
266 | },
267 |
268 | "TkCalendar": {
269 | "name": "tkcalendar",
270 | "type": "pip",
271 | "icon": "tk",
272 | "desc": "Calender widget",
273 | "full_desc": "tkcalendar is a python module that provides the Calendar and DateEntry widgets for Tkinter. The DateEntry widget is similar to a Combobox, but the drop-down is not a list but a Calendar to select a date. Events can be displayed in the Calendar with custom colors and a tooltip displays the event list for a given day. tkcalendar is compatible with both Python 2 and Python 3. It supports many locale settings (e.g. 'fr_FR', 'en_US', ..) and the colors are customizable.",
274 | "author": "Juliette Monsel",
275 | "highlights": ["Calendar widget", "Lots of customisable options", "Data entry widget"],
276 | "repo_url": "https://github.com/j4321/tkcalendar",
277 | "image_url": "https://user-images.githubusercontent.com/89206401/207638596-9fb1389b-0d40-44c9-ad9a-755749ad5a04.jpg",
278 | "installation": "pip install tkcalendar",
279 | "tags": ["tkcalendar","calendar", "data", "data entry", "date", "time"]
280 | },
281 |
282 | "ttkwidgets": {
283 | "name": "ttkwidgets",
284 | "type": "pip",
285 | "icon": "tk",
286 | "desc": "Widget collection",
287 | "full_desc": "A collection of widgets for Tkinter's ttk extensions by various authors.",
288 | "author": "The TkinterEP team",
289 | "highlights": ["Over 20 unique widgets included", "Lots of customizable options", "Timeline widget", "Font chooser", "Color chooser", "Autocomplete widgets", "Table widget", "Tooltips", "Calender widget", "Scale widget", "Checkbox treeview", "more..."],
290 | "repo_url": "https://github.com/TkinterEP/ttkwidgets",
291 | "image_url": "https://user-images.githubusercontent.com/89206401/248753956-16277ff0-a754-46ce-b697-d50f4fcf4891.jpg",
292 | "installation": "pip install ttkwidgets",
293 | "tags": ["widgets", "ttkwidgets", "tkinterep", "timeline", "colorchooser", "calender", "table", "tooltip", "link", "font", "treeview", "autocomplete"]
294 | },
295 |
296 | "ttkthemes": {
297 | "name": "ttkthemes",
298 | "type": "pip",
299 | "icon": "tk",
300 | "desc": "Theme collection for tkinter.ttk",
301 | "full_desc": "A group of themes for the ttk extenstions for Tkinter gathered together by @RedFantom and created by various authors.",
302 | "author": "The TkinterEP team",
303 | "highlights": ["Large number of themes included", "Both modern and retro themes", "Customize themes on the fly"],
304 | "repo_url": "https://github.com/TkinterEP/ttkthemes",
305 | "image_url": "https://user-images.githubusercontent.com/77941087/248731276-5a9afbc8-c4f0-48e5-af17-d4116fab3245.png",
306 | "installation": "pip install ttkthemes",
307 | "tags": ["themes", "ttkthemes", "tkinterep","tkinter themes"]
308 | },
309 |
310 | "TkTerm": {
311 | "name": "tkterm",
312 | "type": "pip",
313 | "icon": "tk",
314 | "desc": "Full console emulator",
315 | "full_desc": "A fully functional terminal emulator built on Tkinter library - perform all basic commands of a terminal. \nThe Terminal is implemented as a Frame widget and can easily be integrated to other Tkinter application.",
316 | "author": "Dhanoo Surasarang",
317 | "highlights": ["All terminal commands can be passed", "Fully customisable", "Fully featured", "Built-in settings", "Multiple tabs"],
318 | "repo_url": "https://github.com/dhanoosu/TkTerm",
319 | "image_url": "https://repository-images.githubusercontent.com/451250393/87f50d40-fbaa-4a1d-b7e6-00eb0da2fdfb",
320 | "installation": "pip install tkterm",
321 | "tags": ["tkterminal","terminal", "console", "command line", "command prompt"]
322 | },
323 |
324 | "TkTerminal": {
325 | "name": "tkterminal",
326 | "type": "pip",
327 | "icon": "tk",
328 | "desc": "Console widget",
329 | "full_desc": "This library gives Terminal widget support to the Tkinter library. Perform almost all the operations of a terminal with tkterminal.",
330 | "author": "Saad Mairaj",
331 | "highlights": ["All terminal commands can be passed", "Enable shell", "Enable line number bar for the terminal", "Pass command that requires input"],
332 | "repo_url": "https://github.com/Saadmairaj/tkterminal",
333 | "image_url": "https://user-images.githubusercontent.com/46227224/113672526-8811cb00-96d5-11eb-8527-5f8c559482fc.png",
334 | "installation": "pip install tkterminal",
335 | "tags": ["tkterminal","terminal", "console", "command line", "command prompt"]
336 | },
337 |
338 | "Auto-py-to-exe": {
339 | "name": "auto-py-to-exe",
340 | "type": "pip",
341 | "icon": "pkg",
342 | "desc": "Package utility",
343 | "full_desc": "A .py to .exe converter using a simple graphical interface and PyInstaller in Python.",
344 | "author": "Brent Vollebregt",
345 | "highlights": ["Convert your python script to exe", "easy interface for pyinstaller", "make one-file or one-directory exe", "settings can be saved"],
346 | "repo_url": "https://github.com/brentvollebregt/auto-py-to-exe",
347 | "image_url": "https://user-images.githubusercontent.com/89206401/188321124-654cb993-80b3-4c92-8aa4-ca366931c96e.png",
348 | "installation": "pip install auto-py-to-exe",
349 | "tags": ["auto-py-to-exe","auto py to exe", "pyinstaller", "executable"]
350 | },
351 |
352 | "TkMacosx": {
353 | "name": "tkmacosx",
354 | "type": "pip",
355 | "icon": "tk",
356 | "desc": "Modified widget library",
357 | "full_desc": "This module provides some modified widgets of Tkinter which fixes many issues with widgets not working properly on macOS platform. For example Button of tkmacosx which looks and feels exactly like a native Tkinter button can change its background and foreground color and has a lot more functionality, Issues with Radiobutton are also fixed with this library. The library also offers some more useful widgets functionality. \nNote that these widgets are also supported in other platforms.",
358 | "author": "Saad Mairaj",
359 | "highlights": ["Different button styles", "CircleButton Widget", "Colorscale Widget", "Marquee Label Widget", "Radiobutton Widget", "More functionalities"],
360 | "repo_url": "https://github.com/Saadmairaj/tkmacosx",
361 | "image_url": "https://user-images.githubusercontent.com/46227224/114270791-e8816f00-9a2b-11eb-911c-a736253b3de5.png",
362 | "installation": "pip install tkmacosx",
363 | "tags": ["tkmacosx","macos", "tkinter", "widgets", "color picker", "colorscale", "colorpicker", "label", "radiobutton", "circle button"]
364 | },
365 |
366 | "Chlorophyll": {
367 | "name": "chlorophyll",
368 | "type": "pip",
369 | "icon": "tk",
370 | "desc": "Code editor",
371 | "full_desc": "Chlorophyll provides the CodeView widget for tkinter, which is a Text widget with syntax highlighting, line numbers, and works as a simple code editor. It is written in Python and uses the pygments library for syntax highlighting and the TkLineNums module for line numbers.",
372 | "author": "rdbende",
373 | "highlights": ["CodeView widget", "syntax highlights based on the coding language", "Line numbers", "Code Editor"],
374 | "repo_url": "https://github.com/rdbende/chlorophyll",
375 | "image_url": "https://user-images.githubusercontent.com/89206401/242209433-c9ac174c-3364-42c1-bff9-bc236b7002f3.jpg",
376 | "installation": "pip install chlorophyll",
377 | "tags": ["tkcode", "code editor", "coding", "editor", "syntax", "console", "code view", "text"]
378 | },
379 |
380 | "TkLineNums": {
381 | "name": "tklinenums",
382 | "type": "pip",
383 | "icon": "tk",
384 | "desc": "Line numbering widget",
385 | "full_desc": "TkLineNums is a simple line numbering widget for Python's tkinter GUI library. It is directly connects to a Text widget and even supports ttk themes through the set_to_ttk_style method.",
386 | "author": "Moosems",
387 | "highlights": ["Clicking on line numbers will set the insert to the beginning of the line.", "Shift clicking will select all text from the end of the line clicked by cursor and the insert position.", "Can handle elided lines (elided lines are lines that are not visible in the text widget).", "Supports ttk themes and allows easy color customization.", "Supports click dragging for selection." ],
388 | "repo_url": "https://github.com/Moosems/TkLineNums",
389 | "image_url": "https://raw.githubusercontent.com/Moosems/TkLineNums/main/misc/TkLineNumsPhoto.png",
390 | "installation": "pip install tklinenums",
391 | "tags": ["tklinenums","linenumbers", "number", "widget"]
392 | },
393 |
394 | "CTkCodeBox": {
395 | "name": "ctkcodebox",
396 | "type": "manual",
397 | "icon": "ctk",
398 | "desc": "Code Viewer Widget",
399 | "full_desc": "Advanced Code Viewer for customtkinter, with line numbers and code highlighting.",
400 | "author": "Akascape",
401 | "highlights": ["Multiple language support", "Code syntax highlighting", "Multiple Color Themes", "Right-click copy-paste menu", "Line numbers on left side", "Fully customizable"],
402 | "repo_url": "https://github.com/Akascape/CTkCodeBox",
403 | "image_url": "https://github.com/user-attachments/assets/a22c6142-afc8-4239-840f-76e06ef7c668",
404 | "installation": "https://github.com/Akascape/CTkCodeBox",
405 | "tags": ["ctkcodebox", "codeeditor", "coding", "editor", "syntax", "programming", "codeview", "textbox", "codebox"]
406 | },
407 |
408 | "TkSheet": {
409 | "name": "tksheet",
410 | "type": "pip",
411 | "icon": "tk",
412 | "desc": "Advanced Table widget",
413 | "full_desc": "tksheet is a Python tkinter table widget written in pure python. It works using tkinter canvases and moves lines, text and rectangles around for only the visible portion of the table",
414 | "author": "ragardner",
415 | "highlights": ["Display and modify tabular data", "Runs smoothly even with millions of rows/columns", "Drag and drop columns and rows", "Change any colors in the sheet","Create an unlimited number of high performance dropdown and check boxes","Edit cells directly"],
416 | "repo_url": "https://github.com/ragardner/tksheet",
417 | "image_url": "https://github.com/ragardner/tksheet/assets/89206401/cf52d22b-8791-43a9-b9bf-2ece90899353",
418 | "installation": "pip install tksheet",
419 | "tags": ["tksheet", "table", "table", "treeview", "tabular","data", "sheet", "excel"]
420 | },
421 |
422 | "TkDnD2": {
423 | "name": "tkinterdnd2",
424 | "type": "pip",
425 | "icon": "tk",
426 | "desc": "Drag and drop support",
427 | "full_desc": "tkDnD2 is a tcl/Tk extension adding native drag and drop support.",
428 | "author": "Philippe Gagne",
429 | "highlights": ["Tkinter native drag and drop support for windows, unix and Mac OSX."],
430 | "repo_url": "https://github.com/pmgagne/tkinterdnd2",
431 | "image_url": null,
432 | "installation": "pip install tkinterdnd2",
433 | "tags": ["tkdnd2", "tkinter", "drag and drop", "drop files", "files","dnd2"]
434 | },
435 |
436 | "TkSliderWidget": {
437 | "name": "tksliderwidget",
438 | "type": "manual",
439 | "icon": "tk",
440 | "desc": "Multi-headed sliders",
441 | "full_desc": "Implementation of a slider widget using tkinter, multiple slider supported.",
442 | "author": "MengxLi",
443 | "highlights": ["Multi-headed sliders", "Customisable slider"],
444 | "repo_url": "https://github.com/MenxLi/tkSliderWidget",
445 | "image_url": "http://i.ibb.co/zRYP9Fv/Annotation-2020-02-13-172914.png",
446 | "installation": "https://github.com/MenxLi/tkSliderWidget",
447 | "tags": ["tkslider", "sliders", "multi slider", "scale", "points"]
448 | },
449 |
450 | "AnimatedGif": {
451 | "name": "animatedgif",
452 | "type": "manual",
453 | "icon": "tk",
454 | "desc": "Tk GIF widget",
455 | "full_desc": "A very simple class (subclass of tkinter.Label) that displays an animated GIF in a label and either runs the animation in a separate thread or using tkinter's after() method.",
456 | "author": "OJ Skjelten",
457 | "highlights": ["Show gifs in tkinter window"],
458 | "repo_url": "https://github.com/olesk75/AnimatedGIF",
459 | "image_url": null,
460 | "installation": "https://github.com/olesk75/AnimatedGIF",
461 | "tags": ["gifs", "animation", "label"]
462 | },
463 |
464 | "CTkGif": {
465 | "name": "CTkGIF",
466 | "type": "manual",
467 | "icon": "ctk",
468 | "desc": "Gif Widget for CustomTkinter",
469 | "full_desc": "Gif Widget for CustomTkinter",
470 | "author": "IfTrueEqualsEqualsTrue",
471 | "highlights": ["Show gifs in customtkinter window"],
472 | "repo_url": "https://github.com/IfTrueEqualsEqualsTrue/CTkGif",
473 | "image_url": null,
474 | "installation": "https://github.com/IfTrueEqualsEqualsTrue/CTkGif",
475 | "tags": ["gifs", "animation", "label", "ctkgif"]
476 | },
477 |
478 | "PyGUI-Gauge": {
479 | "name": "pyguigauge",
480 | "type": "manual",
481 | "icon": "tk",
482 | "desc": "Gauge widget",
483 | "full_desc": "The Gauge Widget is a customizable graphical representation of a gauge, implemented using the Tkinter library in Python. It allows you to create visually appealing gauges with customizable parameters such as size, range, colors, and more.",
484 | "author": "Dongli Liu",
485 | "highlights": ["Customizable: The gauge has high flexibility", "Interactive: Update the gauge value dynamically", "Randomization: Generate random configurations ", "Adjust the size, range, colors, and other parameterst"],
486 | "repo_url": "https://github.com/Dongli99/PY-gui-gauge",
487 | "image_url": "https://github.com/Akascape/tkinter-toolkit/assets/89206401/31888cc2-14a2-467e-9d8d-980bf06a3ea8",
488 | "installation": "https://github.com/Dongli99/PY-gui-gauge",
489 | "tags": ["pyguigauge","dial", "circular","meter","gauge"]
490 | },
491 |
492 | "TkCurve": {
493 | "name": "tkcurve",
494 | "type": "manual",
495 | "icon": "tk",
496 | "desc": "Curve Editor",
497 | "full_desc": "A simple curve line widget for tkinter.",
498 | "author": "Akascape",
499 | "highlights": ["Modern look", "Add points in the curve", "Bezier curves", "Control points"],
500 | "repo_url": "https://github.com/Akascape/TkCurve",
501 | "image_url": "https://github.com/Akascape/TkCurve/assets/89206401/b4cd7314-b899-4244-b4ee-1ff25355ba7c",
502 | "installation": "https://github.com/Akascape/TkCurve",
503 | "tags": ["tkcurve", "lines", "curveeditor", "bezier", "linear"]
504 | },
505 |
506 | "AwesomeTkinter": {
507 | "name": "awesometkinter",
508 | "type": "pip",
509 | "icon": "tk",
510 | "desc": "Image type widget library",
511 | "full_desc": "AwesomeTkinter offers some pretty tkinter widgets. These widgets are just a tkinter widgets with custom styles and images.",
512 | "author": "Aboghazala",
513 | "highlights": ["3D Button widget", "Circular progress bar", "segmented progess bar", "date picker", "more widgets..." ],
514 | "repo_url": "https://github.com/Aboghazala/AwesomeTkinter",
515 | "image_url": "https://user-images.githubusercontent.com/37757246/93717162-3c059b80-fb74-11ea-9998-00fc5ba82ca3.png",
516 | "installation": "pip install awesometkinter",
517 | "tags": ["buttons", "styes", "progressbar","tooltips", "circular", "date picker"]
518 | },
519 |
520 | "TkFileBrowser": {
521 | "name": "tkfilebrowser",
522 | "type": "pip",
523 | "icon": "tk",
524 | "desc": "File dialogs",
525 | "full_desc": "tkfilebrowser is an alternative to tkinter.filedialog that allows the user to select files or directories. The GUI is written with tkinter but the look is closer to GTK and the application uses GTK bookmarks (the one displayed in nautilus or thunar for instance). This filebrowser supports new directory creation and filtype filtering.",
526 | "author": "Juliette Monsel",
527 | "highlights": ["Alternative to tkinter file dialog", "askopenfilename", "askopenfilenames", "askopendirname", "askopendirnames", "asksaveasfilename"],
528 | "repo_url": "https://github.com/j4321/tkFileBrowser",
529 | "image_url": "https://user-images.githubusercontent.com/89206401/242241123-5796e3cf-5246-42a9-b606-99485bdfd979.png",
530 | "installation": "pip install tkfilebrowser",
531 | "tags": ["files", "file browser", "file manager","save", "open", "dialog"]
532 | },
533 |
534 | "CTkPDFViewer": {
535 | "name": "ctkpdfviewer",
536 | "type": "manual",
537 | "icon": "ctk",
538 | "desc": "PDF widget",
539 | "full_desc": "A simple yet powerfull pdf viewer widget for customtkinter! This can be helpful for adding documentation (in the form of PDF) inside your application. \nUsers can quicky view the offline copy of your documenation.",
540 | "author": "Akascape",
541 | "highlights": ["Quick PDF widget", "Load PDF files", "Configure page height/width", "Scrollable pages"],
542 | "repo_url": "https://github.com/Akascape/CTkPDFViewer",
543 | "image_url": "https://user-images.githubusercontent.com/89206401/242335931-1324243e-da47-4bd8-af46-cded53cb7b51.jpg",
544 | "installation": "https://github.com/Akascape/CTkPDFViewer",
545 | "tags": ["files", "pdf viewer", "pdf files","viewer", "documentation", "about"]
546 | },
547 |
548 | "TkColorPicker": {
549 | "name": "tkcolorpicker",
550 | "type": "pip",
551 | "icon": "tk",
552 | "desc": "Color Picker",
553 | "full_desc": "This module contains a ColorPicker class which implements the color picker and an askcolor function that displays the color picker and returns the chosen color in RGB and HTML formats.",
554 | "author": "Juliette Monsel",
555 | "highlights": ["Alternative to default color picker", "classic gradient tools", "detailed color values", "color palleters"],
556 | "repo_url": "https://github.com/j4321/tkColorPicker",
557 | "image_url": "https://user-images.githubusercontent.com/89206401/242483953-1baf0d80-e892-4745-ae26-153a0382a3bc.jpg",
558 | "installation": "pip install tkcolorpicker",
559 | "tags": ["tkcolorpicker","tkinter", "colorpicker", "colors", "picker","color chooser"]
560 | },
561 |
562 | "TkFontChooser": {
563 | "name": "tkfontchooser",
564 | "type": "pip",
565 | "icon": "tk",
566 | "desc": "Font chooser dialog",
567 | "full_desc": "This module contains a FontChooser class which implements the font chooser and an askfont function that displays the font chooser and returns the chosen font when the user closes the font chooser. The font is returned as a dictionary like the one returned by the function 'tkFont.Font.actual'.",
568 | "author": "Juliette Monsel",
569 | "highlights": ["Font chooser dialog", "All font styles", "Preview fonts"],
570 | "repo_url": "https://github.com/j4321/tkFontChooser",
571 | "image_url": "https://user-images.githubusercontent.com/89206401/242485025-f4a7fb17-4e4e-485f-a1f6-5d8f12ad5943.jpg",
572 | "installation": "pip install tkfontchooser",
573 | "tags": ["tkfontchooser","fonts", "words", "chooser", "font chooser"]
574 | },
575 |
576 | "TkinterWeb": {
577 | "name": "tkinterweb",
578 | "type": "pip",
579 | "icon": "tk",
580 | "desc": "Web browser widget",
581 | "full_desc": "TkinterWeb offers bindings for the Tkhtml3 widget, which enables loading HTML and CSS code into Tkinter applications. \nAll major operating systems running Python 2.6+ or Python 3+ are supported.",
582 | "author": "Anderoo",
583 | "highlights": ["Show websites in tkinter frame", "Basic html view only"],
584 | "repo_url": "https://github.com/Andereoo/TkinterWeb",
585 | "image_url": "https://raw.githubusercontent.com/Andereoo/TkinterWeb/main/tkinterweb/images/tkinterweb.png",
586 | "installation": "pip install tkinterweb",
587 | "tags": ["tkwebbrowser","website", "web browser", "browser", "tkinterweb", "webpage"]
588 | },
589 |
590 | "TkinterMapView": {
591 | "name": "tkintermapview",
592 | "type": "pip",
593 | "icon": "ctk",
594 | "desc": "Map display widget",
595 | "full_desc": "TkinterMapView is a tile based interactive map renderer widget for the python Tkinter library. By default, it displays the OpenStreetMap map, but you can change the tile server to whatever you like, and it also supports a second tile server for overlays like OpenSeaMap. You can set the current focus of the widget by a position or address, and place markers or a path on the map.",
596 | "author": "TomSchimansky",
597 | "highlights": ["Mapview widget", "Set coordinate position", "Set address position", "Set position with marker", "Set position and zoom to fit bounding box", "Create path from position list", "Create polygon from position list", "Use other map servers"],
598 | "repo_url": "https://github.com/TomSchimansky/TkinterMapView",
599 | "image_url": "https://user-images.githubusercontent.com/89206401/243061279-d6baac4e-1404-4c0c-9558-41d0d9f51ba5.png",
600 | "installation": "pip install tkintermapview",
601 | "tags": ["tkintermapview", "tkmap", "ctkmap", "customtkinter", "mapview", "maps","sattelite","directions","googlemaps"]
602 | },
603 |
604 | "TkTimePicker": {
605 | "name": "tkTimePicker",
606 | "type": "pip",
607 | "icon": "tk",
608 | "desc": "Clock timepicker",
609 | "full_desc": "This is a simple and fully customizable timepicker widgets made for tkinter. You can make use of three types of timepicker.",
610 | "author": "PaulleDemon",
611 | "highlights": ["Time picker widget", "clock timepicker", "old-spin timepicker", "modern-spin timepicker", "different themes"],
612 | "repo_url": "https://github.com/PaulleDemon/tkTimePicker",
613 | "image_url": "https://raw.githubusercontent.com/PaulleDemon/tkTimePicker/master/ReadMeImages/DraculaDark.png",
614 | "installation": "pip install tkTimePicker",
615 | "tags": ["timepicker", "tktimepicker", "datetime", "clock", "analog", "digital", "dial"]
616 | },
617 |
618 | "Sun-Valley-ttk-Theme": {
619 | "name": "sv-ttk",
620 | "type": "pip",
621 | "icon": "pkg",
622 | "desc": "Modern theme for tkinter.ttk widgets",
623 | "full_desc": "The sv_ttk package allows you to easily give a Windows 11 look and feel to your Tkinter/ttk app. Making applications with Tkinter, that look this gorgeous has never been possible before.",
624 | "author": "rdbende",
625 | "highlights": ["Windows 11 look and feel for Tkinter", "Dark and light themes", "Easy to apply, just add `sv_ttk.use_dark_theme()`"],
626 | "repo_url": "https://github.com/rdbende/Sun-Valley-ttk-theme",
627 | "image_url": "https://raw.githubusercontent.com/rdbende/Sun-Valley-ttk-examples/master/Widget%20demo/Screenshot.png",
628 | "installation": "pip install sv-ttk",
629 | "tags": ["svttk", "sv-ttk", "sun valley theme", "themes", "sunvalleyttktheme", "tkinter", "ttk", "windows 11"]
630 | },
631 |
632 | "Sun Valley Theme Colorizer": {
633 | "name": "sv_ttk_colorizer",
634 | "type": "pip",
635 | "icon": "pkg",
636 | "desc": "sv-ttk theme toolkit",
637 | "full_desc": "A Python module for changing the accent color and applying some tweaks to @rdbende's Sun Valley ttk theme. Simple and easy to use.",
638 | "author": "Valer100",
639 | "highlights": ["change the accent color with no effort", "apply tweaks and fixes, like dark mode titlebars support", "export and import tweaks for future use", "live preview"],
640 | "repo_url": "https://github.com/Valer100/Sun-Valley-Theme-Colorizer",
641 | "image_url": "https://raw.githubusercontent.com/Valer100/Sun-Valley-Theme-Colorizer/main/screenshots/image_hero_dark.png",
642 | "installation": "pip install sv_ttk_colorizer",
643 | "tags": ["svttk", "sv-ttk", "sun valley theme", "svttkcolorizer", "sunvalleyttktheme", "colorizer", "windows 11", "sv-ttk-c", "sv_ttk_c"]
644 | },
645 |
646 | "TkFontAwesome": {
647 | "name": "tkfontawesome",
648 | "type": "pip",
649 | "icon": "tk",
650 | "desc": "Icon Library",
651 | "full_desc": "A library that enables you to use FontAwesome icons in your tkinter application. \nYou may use any of the 1k+ free FontAwesome 5.0 icons. The fill color and size are customized to your specifications and then converted to an object via tksvg that can be used anywhere you would use a tkinter.PhotoImage object.",
652 | "author": "Israel Dryer",
653 | "highlights": ["Easily add FontAwesome icons", "website: https://fontawesome.com/versions"],
654 | "repo_url": "https://github.com/israel-dryer/TkFontAwesome",
655 | "image_url": "https://raw.githubusercontent.com/israel-dryer/TkFontAwesome/main/assets/example-2.1.png",
656 | "installation": "pip install tkfontawesome",
657 | "tags": ["fonts", "tkfontawesome", "icons", "images", "svg"]
658 | },
659 |
660 | "TTkBootstrap": {
661 | "name": "ttkbootstrap",
662 | "type": "pip",
663 | "icon": "tk",
664 | "desc": "Theme/Widget Library",
665 | "full_desc": "A supercharged theme extension for tkinter that enables on-demand modern flat style themes inspired by Bootstrap.",
666 | "author": "Israel Dryer",
667 | "highlights": ["Built-in Themes", "Pre-defined styles", "Simple keyword API", "Lots of new widgets", "Built-in theme creator"],
668 | "repo_url": "https://github.com/israel-dryer/ttkbootstrap",
669 | "image_url": "https://user-images.githubusercontent.com/89206401/246755992-a4f0206d-55e4-4d2d-983a-610a2cc94256.jpg",
670 | "installation": "pip install ttkbootstrap",
671 | "tags": ["widgets", "themes", "styles", "library", "ttkbootstrap"]
672 | },
673 |
674 | "Py-Window-Styles": {
675 | "name": "pywinstyles",
676 | "type": "pip",
677 | "icon": "pkg",
678 | "desc": "Windows 11 window themes",
679 | "full_desc": "Customize your tkinter window with awesome built-in windows header styles and themes. \nThis is only for windows 11",
680 | "author": "Akascape",
681 | "highlights": ["Acrylic theme (blurred window)", "Aero Theme","Custom header colors", "Transparent themes","Windows 7 retro theme","dark header themes", "More customizable window options"],
682 | "repo_url": "https://github.com/Akascape/py-window-styles",
683 | "image_url": "https://user-images.githubusercontent.com/89206401/246872839-986062c0-30a0-4289-929a-e5e2440b8dd1.jpg",
684 | "installation": "pip install pywinstyles",
685 | "tags": ["themes","pywindowstyles", "pywinstyles", "windows11", "styles","blurred","acrylic","headercolor", "titlebar"]
686 | },
687 |
688 | "hPyT": {
689 | "name": "hpyt",
690 | "type": "pip",
691 | "icon": "pkg",
692 | "desc": "Manipulate Windows and Titlebars",
693 | "full_desc": "A package to manipulate windows and titlebar of GUI applications made using python Supports Both Windows 11 and 10",
694 | "author": "Zingzy",
695 | "highlights": ["Hide/Unhide Title Bar", "Rainbow TitleBar", "Hide/Unhide both Maximize and Minimize Buttons (Completely Hides both buttons)", "Hide/Unhide All Buttons or Stuffs", "Enable/Disable Maximize Button", "Enable/Disable Minimize Button", "Window Opacity control", "Window Flashing", "Custom TitleBar Color", "Custom TitleBar Text Color", "Center a window on the screen", "Center a secondary window relative to the primary window", "Other basic window management functions - Move, Resize, Maximize, Minimize, Restore", "Circle, Vertical and Horizontal Motion Animations", "Stylize title text"],
696 | "repo_url": "https://github.com/zingzy/hPyT",
697 | "image_url": "https://github.com/Akascape/tkinter-toolkit/assets/89206401/0b03c50d-a1e1-4ae3-a666-427e81694464",
698 | "installation": "pip install hPyT",
699 | "tags": ["hpyt", "windows", "titlebar","buttons","maximise","minimize","flash","hide"]
700 | },
701 |
702 | "CTkListbox": {
703 | "name": "ctklistbox",
704 | "type": "pip",
705 | "icon": "ctk",
706 | "desc": "Custom Listbox widget",
707 | "full_desc": "A quick and modern listbox widget for customtkinter.",
708 | "author": "Akascape",
709 | "highlights": ["Similar to the tkinter listbox widget", "Configurable options"],
710 | "repo_url": "https://github.com/Akascape/CTkListbox",
711 | "image_url": "https://user-images.githubusercontent.com/89206401/247524994-256c135f-3d6c-4daa-87a5-b4572a2c905f.jpg",
712 | "installation": "pip install CTkListbox",
713 | "tags": ["customtkinter", "listbox", "combobox", "optionmenu", "menu"]
714 | },
715 |
716 |
717 | "CTkVisualizer": {
718 | "name": "ctkvisualizer",
719 | "type": "pip",
720 | "icon": "ctk",
721 | "desc": "Audio Visualizer for CTk",
722 | "full_desc": "CTkVisualizer is an interactive and visually engaging tool that transforms audio data into dynamic visual representations. Utilizing Python libraries such as librosa, pygame, and customtkinter, this application provides real-time visualization of audio frequencies and amplitudes through colorful, animated bars. Users can play audio files, pause, and adjust volume levels, while enjoying a captivating display that enhances their listening experience. Ideal for music lovers, developers, and artists, this project showcases the beauty of sound through visual art.",
723 | "author": "Loris Dante (iLollek)",
724 | "highlights": ["Real-Time Visualization: Experience live audio visualization with animated \nbars that respond instantly to changes in frequency and amplitude.", "Customizable Color Schemes: Personalize the visualizer by changing the \ncolor of the audio bars to suit your preferences or the mood of the music.","Dynamic Audio Playback Control: Easily control playback with methods to \nplay, pause, and resume audio, along with volume adjustments for a tailored \nlistening experience.","Transparent Bar Effects: Enhance visual aesthetics with optional \ntransparency effects, creating a unique and immersive experience."],
725 | "repo_url": "https://github.com/iLollek/CTkVisualizer",
726 | "image_url": "https://raw.githubusercontent.com/iLollek/CTkVisualizer/refs/heads/main/image.png",
727 | "installation": "pip install CTkVisualizer",
728 | "tags": ["audio visualizer", "music visualizer", "visualizer", "ctkvisualizer", "animation", "sound"]
729 | },
730 |
731 | "TkVisualizer": {
732 | "name": "tkvisualizer",
733 | "type": "manual",
734 | "icon": "tk",
735 | "desc": "Audio Visualizer widget",
736 | "full_desc": "Simple audio visualizer widget for tkinter.",
737 | "author": "Akascape",
738 | "highlights": ["Gradient Frame", "Customizable options", "currently in beta stage..."],
739 | "repo_url": "https://github.com/Akascape/TkVisualizer",
740 | "image_url": "https://user-images.githubusercontent.com/89206401/248234441-5f16df2c-0dce-42a6-ac1c-78664314a35a.jpg",
741 | "installation": "https://github.com/Akascape/TkVisualizer",
742 | "tags": ["audio visualizer", "music visualizer", "visualizer", "tkvisualizer", "animation", "sound"]
743 | },
744 |
745 | "CustomTkinterTitlebar":{
746 | "name": "customtkintertitlebar",
747 | "type": "pip",
748 | "icon": "tk",
749 | "desc": "Customizable titlebar for windows",
750 | "full_desc": "This is a project that can help you to get a custom titlebar. Different types of widgets can be added to the titlebar",
751 | "author": "XiaoBaiYun",
752 | "highlights": ["Insert components to titlebar", "Custom minsize & maxsize buttons", "Different window themes: mica, fluent, blur", "Tabview widget in the titlebar"],
753 | "repo_url": "https://github.com/littlewhitecloud/CustomTkinterTitlebar/",
754 | "image_url": "https://user-images.githubusercontent.com/71159641/244681503-30f7c785-d189-4865-8095-384259e9b419.png",
755 | "installation": "pip install CustomTkinterTitlebar",
756 | "tags": ["CTkTitlebar", "customtkinter titlebar", "titlebar", "header", "custom titlebar"]
757 | },
758 |
759 | "CTkXYFrame": {
760 | "name": "ctkxyframe",
761 | "type": "manual",
762 | "icon": "ctk",
763 | "desc": "Better scrollable frame",
764 | "full_desc": "A better scrollable frame for customtkinter with both x and y scrollability.",
765 | "author": "Akascape",
766 | "highlights": ["Both x and y scrollability at the same time", "Proper mousewheel bindings", "Dynamic scrollbars, hides automatically when reaches full size", "Full customisability just like ctkscrollable frame"],
767 | "repo_url": "https://github.com/Akascape/CTkXYFrame",
768 | "image_url": "https://github-production-user-asset-6210df.s3.amazonaws.com/89206401/250564194-05298e8d-cc9d-48ca-8b27-9943176d5c1a.jpg",
769 | "installation": "https://github.com/Akascape/CTkXYFrame",
770 | "tags": ["customtkinter", "ctkxyframe", "ctkscrollableframe", "scrollableframe", "frame"]
771 | },
772 |
773 | "Tkinter Quick Layout": {
774 | "name": "Tkinter_Quick_Layout",
775 | "type": "manual",
776 | "icon": "pkg",
777 | "desc": "Create complex grid layouts for reference",
778 | "full_desc": "This repository will help you create complex layouts when building Tkinter and CustomTkinter application",
779 | "author": "EasyDevv",
780 | "highlights": ["Easily take reference while making any new layout", "Method: Grid", "Different controls and options", "Copy data to clipboard"],
781 | "repo_url": "https://github.com/EasyDevv/Tkinter_Quick_Layout",
782 | "image_url": "https://user-images.githubusercontent.com/11148818/276195554-35887086-a3fd-48c6-807f-6a41049fafb8.png",
783 | "installation": "https://github.com/EasyDevv/Tkinter_Quick_Layout",
784 | "tags": ["customtkinter", "tkinter", "frame", "layout maker", "tkinter quick layout", "quicklayout", "design", "tools","gui", "app"]
785 | },
786 |
787 | "CTkMeter": {
788 | "name": "CTkMeter",
789 | "type": "manual",
790 | "icon": "ctk",
791 | "desc": "Circular progress bar",
792 | "full_desc": "A cool and modern looking meter widget with hover animation for CustomTkinter library.",
793 | "author": "Anand Krishnan",
794 | "highlights": ["Easily add a circular progress bar widget", "Set loading percentage", "Hover effect", "Adjust animation"],
795 | "repo_url": "https://github.com/anamite/ctk_widget",
796 | "image_url": "https://github.com/anamite/ctk_widget/assets/77412636/d53b3537-45a5-4b05-8d21-a70e61a09b45",
797 | "installation": "https://github.com/anamite/ctk_widget",
798 | "tags": ["ctkmeter", "meter", "dial", "gauge", "circular progressbar", "progressbar","loading"]
799 | },
800 |
801 | "CTkClock": {
802 | "name": "ctkclock",
803 | "type": "manual",
804 | "icon": "ctk",
805 | "desc": "Clock Widget",
806 | "full_desc": "A Library for CLock widget in Tkinter and CTkinter.",
807 | "author": "Arthur-101",
808 | "highlights": ["Clock component in CTk", "Fully customizable"],
809 | "repo_url": "https://github.com/Arthur-101/CTkClock",
810 | "image_url": "https://raw.githubusercontent.com/Arthur-101/CTkClock/main/Images/example%20clock3.png",
811 | "installation": "https://github.com/Arthur-101/CTkClock",
812 | "tags": ["customtkinter", "ctkclock", "clock", "analogclock", "time", "watch"]
813 | },
814 |
815 | "Popup Menu": {
816 | "name": "popup menu",
817 | "type": "manual",
818 | "icon": "ctk",
819 | "desc": "Right click Menu",
820 | "full_desc": "A custom right click menu class for customtkinter.",
821 | "author": "Akascape",
822 | "highlights": ["Right click menu", "Hides with outside click", "Rounded corners", "Customizable options", "No installation required"],
823 | "repo_url": "https://www.akascape.com/coding/how-to-make-a-popup-menu-in-customtkinter",
824 | "image_url": "https://github.com/TomSchimansky/CustomTkinter/assets/89206401/b66e6683-7caf-46cc-8a3e-2fed9c584c9a",
825 | "installation": "https://www.akascape.com/coding/how-to-make-a-popup-menu-in-customtkinter",
826 | "tags": ["popupmenu", "floatingwindow", "rightclick", "menu", "options", "roundedcorners"]
827 | },
828 |
829 | "Full Custom Window": {
830 | "name": "customwindow",
831 | "type": "manual",
832 | "icon": "ctk",
833 | "desc": "custom window style",
834 | "full_desc": "A custom window class with new header style for windows 10/11 with rounded corners",
835 | "author": "Akascape",
836 | "highlights": ["Drag window precisely", "Customize title bar", "Resizable window", "Icon image", "Rounded corners"],
837 | "repo_url": "https://www.akascape.com/coding/full-python-window-template-with-new-header",
838 | "image_url": "https://user-images.githubusercontent.com/89206401/205429162-b89b06d9-5db5-4844-b8ee-903a193e9463.jpg",
839 | "installation": "https://www.akascape.com/coding/full-python-window-template-with-new-header",
840 | "tags": ["window", "macos", "style", "customwindow"]
841 | },
842 |
843 | "Tk-to-CTk": {
844 | "name": "tkinter-to-customtkinter",
845 | "type": "manual",
846 | "icon": "ctk",
847 | "desc": "conversion tool",
848 | "full_desc": "Convert your tkinter scripts and guis to custom tkinter with this command line tool. Comes with graphical user interface option and can determine programming paradigm and import structure to keep consistency across files",
849 | "author": "Donny",
850 | "highlights": ["Convert tkinter app to ctk"],
851 | "repo_url": "https://github.com/Donny-GUI/tkinter-to-customtkinter-converter",
852 | "image_url": "https://user-images.githubusercontent.com/108424001/226063288-66da2f57-f5b7-49f1-bdd5-f465e963b125.png",
853 | "installation": "https://github.com/Donny-GUI/tkinter-to-customtkinter-converter",
854 | "tags": ["tkintertocustomtkinter", "tktoctk", "convertor","tools"]
855 | },
856 |
857 | "CTkComponents": {
858 | "name": "CTkComponents",
859 | "type": "manual",
860 | "icon": "ctk",
861 | "desc": "usefull ui elements",
862 | "full_desc": "CTk Components is a collection of widgets and utilities designed as extensions or add-ons for customtkinter",
863 | "author": "rudymohammadbali",
864 | "highlights": ["CTkAlert", "CTkBanner", "CTkNotification", "CTkLoader", "CTkPopup", "CTkProgressPopup", "CTkTreeVew", "More..."],
865 | "repo_url": "https://github.com/rudymohammadbali/ctk_components",
866 | "image_url": "",
867 | "installation": "https://github.com/rudymohammadbali/ctk_components/",
868 | "tags": ["customtkinter", "ctkcomponents", "popupmenu","banner","notification","loader","gif","progress","treeview","messagebox"]
869 | },
870 |
871 | "CTkChart": {
872 | "name": "ctkchart",
873 | "type": "pip",
874 | "icon": "ctk",
875 | "desc": "Chart widget for CTk",
876 | "full_desc": "Create charts in customtkinter windows!",
877 | "author": "Thisal-D",
878 | "highlights": ["plot graph easily", "configure graph data", "animated graph", "fully customisable", "lightweight library"],
879 | "repo_url": "https://github.com/Thisal-D/ctkchart",
880 | "image_url": "https://github.com/Thisal-D/ctkchart/assets/93121062/ecb91596-2c50-46ef-923f-c3db0d6091d1",
881 | "installation": "pip install ctkchart",
882 | "tags": ["tkchart","ctkchart", "chart", "graph", "plot", "line chart"]
883 | },
884 |
885 | "Tkhtmlview": {
886 | "name": "tkhtmlview",
887 | "type": "pip",
888 | "icon": "tk",
889 | "desc": "HTML widgets for tkinter",
890 | "full_desc": "Display basic html in ui",
891 | "author": "bauripalash / paolo-gurisatti",
892 | "highlights": ["simple and lightweight", "text can be disaply as html", "image support"],
893 | "repo_url": "https://github.com/paolo-gurisatti/tk_html_widgets",
894 | "image_url": "https://github.com/Thisal-D/Youtube-Downloader/assets/93121062/b38ada9b-87ac-438a-9b12-a3aebb098f32",
895 | "installation": "pip install tkhtmlview",
896 | "tags": ["html", "tkhtmlview", "tk_html_widgets"]
897 | },
898 |
899 | "ShadowTk": {
900 | "name": "ShadowTk",
901 | "type": "manual",
902 | "icon": "tk",
903 | "desc": "Shadows in widgets",
904 | "full_desc": "Add Shadows to Tkinter Components",
905 | "author": "vednig",
906 | "highlights": ["simple shadows around tkinter widgets"],
907 | "repo_url": "https://github.com/vednig/shadowTk",
908 | "image_url": "https://i.stack.imgur.com/fJot2.png",
909 | "installation": "https://github.com/vednig/shadowTk",
910 | "tags": ["shadowtk", "shadows", "background"]
911 | },
912 |
913 | "Libtextworker": {
914 | "name": "libtextworker",
915 | "type": "pip",
916 | "icon": "tk",
917 | "desc": "Utility project",
918 | "full_desc": "This library aims to be suitable for both GUI and CLI/TUI based programs.",
919 | "author": "Le Bao Nguyen",
920 | "highlights": ["Tkinter text edit widget with line numbers", "A custom about dialog", "Directory tree + list (on work) with auto refresh", "JSON+INI configuration system and class for anything you like", "Auto coloring, uses darkdetect"],
921 | "repo_url": "https://github.com/lebao3105/libtextworker",
922 | "image_url": "https://github.com/Akascape/tkinter-toolkit/assets/77564176/dd31b1f6-9f97-44f9-af0f-94a09d853cae",
923 | "installation": "pip install libtextworker",
924 | "tags": ["libtextworker", "dialog box", "directory", "tree", "json", "auto-color", "config"]
925 | },
926 |
927 | "RoundedTk": {
928 | "name": "RoundedTk",
929 | "type": "manual",
930 | "icon": "tk",
931 | "desc": "Round windows",
932 | "full_desc": "Rounded Tk is a Python library that allows you to easily create rounded windows and widgets with Python Tkinter.",
933 | "author": "AZachia",
934 | "highlights": ["Apply transparent round corners in the tkinter window", "https://github.com/AZachia/Rounded-Tk"],
935 | "repo_url": "https://github.com/AZachia/Rounded-Tk",
936 | "image_url": "https://raw.githubusercontent.com/AZachia/Rounded-Tk/main/images/RoundedTk.png",
937 | "installation": "https://github.com/AZachia/Rounded-Tk",
938 | "tags": ["roundedtk", "transparent"]
939 | },
940 |
941 | "CTkSlideView": {
942 | "name": "CTkSlideView",
943 | "type": "manual",
944 | "icon": "ctk",
945 | "desc": "Slideshow carousel",
946 | "full_desc": "A Slide View (Slideshow carousel) for customtkinter. This includes a smooth animation between the slides too.",
947 | "author": "rigvedmaanas",
948 | "highlights": ["Add widgets in the slide", "Smooth animation between the slide"],
949 | "repo_url": "https://github.com/rigvedmaanas/CTkSlideView",
950 | "image_url": "https://github.com/rigvedmaanas/CTkSlideView/assets/89206401/ff58a72e-dc6c-4193-ba1a-8f78773405c8",
951 | "installation": "https://github.com/rigvedmaanas/CTkSlideView",
952 | "tags": ["slideshow", "slides", "ctkslideview", "animation"]
953 | },
954 |
955 | "CTkCalendar": {
956 | "name": "CTkCalendar",
957 | "type": "manual",
958 | "icon": "ctk",
959 | "desc": "Calendar widget for CTk",
960 | "full_desc": "CTkCalendar is a modern and customizable calendar widget built with Python's tkinter and customtkinter libraries. It provides a sleek, user-friendly interface to interact with calendar data, and it is perfect for adding calendar functionality to your Python applications.",
961 | "author": "Mustafa Hilmi YAVUZHAN",
962 | "highlights": ["Aesthetic design with customizable colors and themes.", "Month Navigation: Easily navigate between months with previous and next buttons.", "Current Day Highlight: Highlight the current day with customizable colors.", "Custom Callback: Execute a callback function when a day is clicked.", "Flexible Display Options: Hide or show window elements based on preferences."],
963 | "repo_url": "https://github.com/MustafaHilmiYAVUZHAN/CTkCalender",
964 | "image_url": "https://github.com/MustafaHilmiYAVUZHAN/CTkCalender/blob/main/screenshots/All.png?raw=true",
965 | "installation": "https://github.com/MustafaHilmiYAVUZHAN/CTkCalender",
966 | "tags": ["ctkcalendar", "calendar", "calender", "month", "day", "year"]
967 | },
968 |
969 | "winaccent": {
970 | "name": "winaccent",
971 | "type": "pip",
972 | "icon": "pkg",
973 | "desc": "Windows accent color utility",
974 | "full_desc": "A simple and lightweight Python module for getting Windows' accent color or a shade of it. Works on both Windows 10 and 11 and doesn't require additional dependencies.",
975 | "author": "Valer100",
976 | "highlights": ["get light mode/dark mode/normal accent color or a shade of it", "get a callback when the accent color is changed", "lightweight and easy to use", "no additional dependencies"],
977 | "repo_url": "https://github.com/Valer100/winaccent",
978 | "image_url": "https://github.com/Valer100/winaccent/blob/main/assets/hero.png?raw=true",
979 | "installation": "pip install winaccent",
980 | "tags": ["winaccent", "color", "accent", "windows"]
981 | },
982 |
983 | "CTkToggle": {
984 | "name": "ctktoggle",
985 | "type": "pip",
986 | "icon": "ctk",
987 | "desc": "Toggle Button widget",
988 | "full_desc": "A lightweight and easy-to-use Python package designed to simplify the creation and management of toggle buttons and toggle groups using CustomTkinter. Seamlessly integrate visually appealing toggle buttons into your CustomTkinter-based GUI applications. The package supports dynamic group behavior, customizable colors, and robust state management, making it ideal for modern, interactive user interfaces.",
989 | "author": "Tchicdje Kouojip Joram Smith",
990 | "highlights": ["Create toggle buttons with customizable states.", "Group buttons for coordinated toggling.", "Easily manage toggle states programmatically.", "Freely engage in the development of cleaner UIs.", "Enhance versatility by replacing CTkSwitch with CTkToggleButton."],
991 | "repo_url": "https://github.com/DeltaGa/ctk_toggle",
992 | "image_url": "https://raw.githubusercontent.com/DeltaGa/ctk_toggle/refs/heads/main/assets/thumbnail.jpg",
993 | "installation": "pip install ctk_toggle",
994 | "tags": ["ctktoggle", "ctk_toggle", "togglebutton", "button"]
995 | },
996 |
997 | "Maliang": {
998 | "name": "maliang",
999 | "type": "pip",
1000 | "icon": "tk",
1001 | "desc": "A lightweight UI framework drawn in Tk Canvas!",
1002 | "full_desc": "A lightweight UI framework based on tkinter with all UI drawn in Canvas! Maliang supports modern and interactive user interfaces, adaptive systems theme, plotting and animation of matplotlib, playing videos with audio, drawing simple 3D objects, and building custom widgets.",
1003 | "author": "Xiaokang2022",
1004 | "highlights": [
1005 | "Widgets drawn entirely from the canvas!",
1006 | "Very modern UI!",
1007 | "Partially compatible with tkinter!",
1008 | "It's very easy to learn!",
1009 | "Adaptive Systems Theme!",
1010 | "Support plotting and animation of matplotlib!",
1011 | "Support playing videos with audio!",
1012 | "Support for drawing simple 3D objects!",
1013 | "Easily build the widgets you want!"
1014 | ],
1015 | "repo_url": "https://github.com/Xiaokang2022/maliang",
1016 | "image_url": "https://github.com/Xiaokang2022/maliang-demos/blob/main/preview/demo1-1.png?raw=true",
1017 | "installation": "pip install maliang",
1018 | "tags": ["maliang", "canvas", "tkinter", "ui framework", "widgets", "tkintertools"]
1019 | },
1020 |
1021 | "CTkExtendedGraph": {
1022 | "name": "CTkExtendedGraph",
1023 | "type": "pip",
1024 | "icon": "ctk",
1025 | "desc": "A customizable and dynamic widget for stacked bar charts!",
1026 | "full_desc": "CTkExtendedGraph is a customizable and dynamic widget built on top of matplotlib for displaying stacked bar charts in Tkinter applications. It supports resizable GUIs, allows dynamic updates, and is highly customizable in terms of colors, categories, units, and title.",
1027 | "author": "Loris Dante (iLollek)",
1028 | "highlights": [
1029 | "Resizable: Automatically adjusts dimensions based on available space.",
1030 | "Customizable: Tailor title, categories, colors, and units.",
1031 | "Dynamic Updates: Easily add new data entries.",
1032 | "Easy Install: Install via pip."
1033 | ],
1034 | "repo_url": "https://github.com/iLollek/CTkExtendedGraph",
1035 | "image_url": "https://raw.githubusercontent.com/iLollek/CTkExtendedGraph/refs/heads/main/demo_picture.png",
1036 | "installation": "pip install CTkExtendedGraph",
1037 | "tags": ["customtkinter", "widget", "matplotlib", "data visualization", "bar chart", "chart", "graph", "ctkextendedgraph"]
1038 | },
1039 |
1040 | "CTkFIleDialog": {
1041 | "name": "CTkFIleDialog",
1042 | "type": "manual",
1043 | "icon": "ctk",
1044 | "desc": "A customizable and dynamic widget for stacked bar charts!",
1045 | "full_desc": "An alternative to the standard tkinter.filedialog, written in CustomTkinter, so it matches the style of CustomTkinter applications.",
1046 | "author": "limafresh",
1047 | "highlights": [
1048 | "A better File Dialog for customtkinter",
1049 | "You can customize the width, height, title and initial dir. Folder browsing is fast and lag-free.",
1050 | "File Picker Widget",
1051 | "Cross Platform"
1052 | ],
1053 | "repo_url": "https://github.com/limafresh/CTkFileDialog",
1054 | "image_url": "https://raw.githubusercontent.com/limafresh/CTkFileDialog/main/screenshot3.png",
1055 | "installation": "https://github.com/limafresh/CTkFileDialog",
1056 | "tags": ["ctkfiledialog", "customtkinter", "tkfiledialog", "filedialog", "fileexplorer", "finder", "fileopener", "filepicker", "ctkfilepicker"]
1057 | },
1058 |
1059 | "CTkSeparator": {
1060 | "name": "ctkseparator",
1061 | "type": "pip",
1062 | "icon": "ctk",
1063 | "desc": "Customizable Separator",
1064 | "full_desc": "CTkSeparator is a widget for CustomTkinter that provides a customizable separating line. It supports dashed lines, gradient colors, and adjustable thickness. This makes it useful for visually dividing UI sections in a modern, aesthetic way.",
1065 | "author": "AJ-cubes",
1066 | "highlights": [
1067 | "Customizable separating line",
1068 | "Supports dashed styles",
1069 | "Gradient colors for styling",
1070 | "Adjustable thickness"
1071 | ],
1072 | "repo_url": "https://github.com/AJ-cubes/CTkSeparator",
1073 | "image_url": "https://raw.githubusercontent.com/AJ-cubes/CTkSeparator/refs/heads/main/examples/CTkSeparator%20Example.png",
1074 | "installation": "pip install CTkSeparator",
1075 | "tags": ["ctkseparator", "customtkinter", "ctk", "separator", "line", "gap", "border"]
1076 | }
1077 | }
1078 |
1079 |
--------------------------------------------------------------------------------
/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Akascape/tkinter-toolkit/37bc38768677e90fccb90cb7ea66a643027fd1cc/assets/logo.png
--------------------------------------------------------------------------------
/assets/pkg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Akascape/tkinter-toolkit/37bc38768677e90fccb90cb7ea66a643027fd1cc/assets/pkg.png
--------------------------------------------------------------------------------
/assets/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Akascape/tkinter-toolkit/37bc38768677e90fccb90cb7ea66a643027fd1cc/assets/star.png
--------------------------------------------------------------------------------
/assets/tk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Akascape/tkinter-toolkit/37bc38768677e90fccb90cb7ea66a643027fd1cc/assets/tk.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | customtkinter
2 | pillow
3 | setuptools
4 |
--------------------------------------------------------------------------------
/tkinter-toolkit.py:
--------------------------------------------------------------------------------
1 | """
2 | Tkinter Toolkit
3 | Author: Akash Bora
4 | Version: 0.4
5 | License: MIT
6 | Homepage: https://github.com/Akascape/tkinter-toolkit
7 | """
8 |
9 | try:
10 | import customtkinter
11 | from PIL import Image, ImageTk
12 | import os
13 | import json
14 | from urllib.request import urlopen, urlretrieve
15 | import io
16 | import webbrowser
17 | import sys
18 | import pkg_resources
19 | import threading
20 | except Exception as e:
21 | import os
22 | os.system("pip install -r requirements.txt")
23 |
24 | customtkinter.set_appearance_mode("System")
25 | customtkinter.set_default_color_theme("dark-blue")
26 |
27 | class App(customtkinter.CTk):
28 |
29 | DIRPATH = os.path.join(os.path.dirname(__file__))
30 | LOADED_IMAGES = {}
31 |
32 | def __init__(self):
33 | super().__init__()
34 |
35 | self.title("Tkinter Toolkit")
36 | self.width = int(self.winfo_screenwidth()/2)
37 | self.height = int(self.winfo_screenheight()/1.5)
38 | self.geometry(f"{self.width}x{self.height}")
39 | self.minsize(500,500)
40 | self.bind("<1>", lambda event: event.widget.focus_set())
41 | try:
42 | self.iconpath = ImageTk.PhotoImage(file=os.path.join("assets","logo.png"))
43 | self.wm_iconbitmap()
44 | self.iconphoto(False, self.iconpath)
45 | except:
46 | pass
47 |
48 | self.frame = customtkinter.CTkFrame(master=self)
49 | self.frame.pack(expand=True, fill="both", padx=10, pady=10)
50 |
51 | self.frame.columnconfigure(1, weight=1)
52 | self.frame.rowconfigure(2, weight=1)
53 |
54 | if sys.platform.startswith("win"):
55 | self.font = "Segoe UI"
56 | else:
57 | self.font = customtkinter.ThemeManager.theme["CTkFont"]["family"]
58 |
59 | self.label = customtkinter.CTkLabel(master=self.frame, text="Tkinter Toolkit", font=(self.font,25,"bold"))
60 | self.label.grid(row=0, column=0, padx=20, pady=10)
61 |
62 | self.entry = customtkinter.CTkEntry(master=self.frame, placeholder_text="search", width=200)
63 | self.entry.grid(row=0, column=1, pady=10, sticky="e")
64 | self.entry.bind("", lambda e: self.search_package(self.entry.get()))
65 |
66 | self.about_button = customtkinter.CTkButton(master=self.frame, text="i", hover=False, width=30, command=self.open_about_window)
67 | self.about_button.grid(row=0, column=2, padx=10, pady=10, sticky="e")
68 |
69 | self.option_type = customtkinter.CTkSegmentedButton(self.frame, values=["All","pip", "manual"], selected_color=["grey40","grey10"],
70 | selected_hover_color=["grey38","grey12"], height=30, command=self.filter_packages)
71 | self.option_type.set("All")
72 | self.option_type.grid(row=1, column=0, columnspan=3, padx=10, pady=10, sticky="ew")
73 |
74 | self.scrollable_frame = customtkinter.CTkScrollableFrame(self.frame)
75 | self.scrollable_frame.grid(row=2, column=0, columnspan=3, padx=10, pady=(0,10), sticky="nsew")
76 |
77 | self.ctkimage = customtkinter.CTkImage(Image.open(os.path.join(os.path.dirname(customtkinter.__file__),"assets","icons","CustomTkinter_icon_Windows.ico")))
78 | self.tkimage = customtkinter.CTkImage(Image.open(os.path.join(App.DIRPATH, "assets", "tk.png")))
79 | self.packageimage = customtkinter.CTkImage(Image.open(os.path.join(App.DIRPATH, "assets", "pkg.png")))
80 | self.starimage = customtkinter.CTkImage(Image.open(os.path.join(App.DIRPATH, "assets", "star.png")))
81 |
82 | self.item_frame = {}
83 | self.modules = [pkg.key for pkg in pkg_resources.working_set]
84 | self.read_database()
85 |
86 | def add_item(self, name, icon):
87 | """ add new package to the list """
88 | self.item_frame[name] = customtkinter.CTkFrame(self.scrollable_frame)
89 | self.item_frame[name].pack(expand=True, fill="x", padx=5, pady=5)
90 |
91 | if icon=="tk":
92 | icon = self.tkimage
93 | elif icon=="ctk":
94 | icon = self.ctkimage
95 | elif icon=="pkg":
96 | icon = self.packageimage
97 | else:
98 | icon = None
99 |
100 | self.item_frame[name].columnconfigure(0, weight=1)
101 | item_name = customtkinter.CTkButton(self.item_frame[name], fg_color="transparent", image=icon,
102 | text_color=customtkinter.ThemeManager.theme["CTkLabel"]["text_color"],
103 | height=50, anchor="w", font=(self.font, 15, "bold"), width=500,
104 | text=name, hover=False, command=lambda: threading.Thread(target=self.open_info_window, args=(name,), daemon=True).start())
105 | item_name.grid(row=0, column=0, sticky="ew", pady=5, padx=5)
106 |
107 | if self.data[name]["name"] in self.modules:
108 | version = pkg_resources.get_distribution(self.data[name]["name"]).version
109 | desc = f"{self.data[name]['desc']} \nversion: {version}"
110 | self.data[name]["installation"] = f"{self.data[name]['installation']} --upgrade"
111 | else:
112 | self.item_frame[name].configure(fg_color=["grey80", "grey20"])
113 | desc = f"{self.data[name]['desc']} "
114 |
115 | item_label = customtkinter.CTkLabel(self.item_frame[name], width=250, justify="left", text=desc, anchor="w", wraplength=250)
116 | item_label.grid(row=0, column=1, padx=5)
117 |
118 | def search_package(self, string):
119 | """ search the packages based on package tags """
120 | for i in self.data.keys():
121 | for j in self.data[i]["tags"]:
122 | if j.replace(" ", "").startswith(string.lower().replace(" ", "")):
123 | if self.data[i]["type"]==self.option_type.get() or self.option_type.get()=="All":
124 | self.item_frame[i].pack(expand=True, fill="x", padx=5, pady=5)
125 | break
126 | else:
127 | self.item_frame[i].pack_forget()
128 | self.scrollable_frame._parent_canvas.yview_moveto(0.0)
129 |
130 | def filter_packages(self, type_):
131 | """ filter out packages based on download type """
132 | if type_=="All":
133 | for i in self.item_frame.values():
134 | i.pack(expand=True, fill="x", padx=5, pady=5)
135 | elif type_=="pip":
136 | for i in self.item_frame.values():
137 | i.pack_forget()
138 | for i in self.data.keys():
139 | if self.data[i]["type"]=="pip":
140 | self.item_frame[i].pack(expand=True, fill="x", padx=5, pady=5)
141 | elif type_=="manual":
142 | for i in self.item_frame.values():
143 | i.pack_forget()
144 | for i in self.data.keys():
145 | if self.data[i]["type"]=="manual":
146 | self.item_frame[i].pack(expand=True, fill="x", padx=5, pady=5)
147 | self.search_package(self.entry.get())
148 |
149 | def open_about_window(self):
150 | """ open about window """
151 | def close_toplevel():
152 | about_window.destroy()
153 | self.about_button.configure(state="normal")
154 |
155 | def update_database():
156 | """ update the database and check for new packages """
157 | database_file = os.path.join(App.DIRPATH, "assets", "database.json")
158 | try:
159 | urlretrieve('https://raw.githubusercontent.com/Akascape/tkinter-toolkit/main/assets/database.json', database_file)
160 | except:
161 | update_label.configure(text="no connection!")
162 | return
163 | for i in self.item_frame.values():
164 | i.pack_forget()
165 | self.item_frame = {}
166 | self.read_database()
167 | update_label.configure(text="database updated!")
168 |
169 | about_window = customtkinter.CTkToplevel(self)
170 | about_window.title("About")
171 | about_window.transient(self)
172 |
173 | spawn_x = int(self.winfo_width() * .5 + self.winfo_x() - .5 * 350 + 7)
174 | spawn_y = int(self.winfo_height() * .5 + self.winfo_y() - .5 * 250 + 20)
175 |
176 | about_window.geometry(f"350x250+{spawn_x}+{spawn_y}")
177 | about_window.resizable(False, False)
178 | about_window.protocol("WM_DELETE_WINDOW", close_toplevel)
179 | about_window.wm_iconbitmap()
180 | about_window.after(300, lambda: about_window.iconphoto(False, self.iconpath))
181 |
182 | label_title = customtkinter.CTkLabel(about_window, text="Tkinter Toolkit", font=(self.font,25,"bold"))
183 | label_title.pack(fill="x", padx=10, pady=15)
184 | info = "Package finder for tkinter and customtkinter. \n\nMade by Akascape"
185 | label_info = customtkinter.CTkLabel(about_window, text=info, anchor="w", justify="left")
186 | label_info.pack(fill="x", padx=10)
187 |
188 | repo_link = customtkinter.CTkLabel(about_window, text="Homepage", font=(self.font,13), text_color=["blue","cyan"])
189 | repo_link.pack(anchor="w", padx=10)
190 |
191 | repo_link.bind("", lambda event: webbrowser.open_new_tab("https://github.com/Akascape/tkinter-toolkit"))
192 | repo_link.bind("", lambda event: repo_link.configure(font=(self.font,13,"underline"), cursor="hand2"))
193 | repo_link.bind("", lambda event: repo_link.configure(font=(self.font,13), cursor="arrow"))
194 |
195 | submit_package_link = customtkinter.CTkLabel(about_window, text="Submit Your Own Package", font=(self.font,13), text_color=["blue","cyan"])
196 | submit_package_link.pack(anchor="w", padx=10)
197 |
198 | submit_package_link.bind("", lambda event: webbrowser.open_new_tab("https://github.com/Akascape/tkinter-toolkit/discussions/1"))
199 | submit_package_link.bind("", lambda event: submit_package_link.configure(font=(self.font,13,"underline"), cursor="hand2"))
200 | submit_package_link.bind("", lambda event: submit_package_link.configure(font=(self.font,13), cursor="arrow"))
201 |
202 | update_database_button = customtkinter.CTkButton(about_window, text="Update Database", command=update_database)
203 | update_database_button.pack(pady=10)
204 |
205 | update_label = customtkinter.CTkLabel(about_window, text="check for new packages!")
206 | update_label.pack()
207 | self.about_button.configure(state="disabled")
208 |
209 | def get_image(self, name):
210 | """ download the image preview """
211 | try:
212 | if name not in self.LOADED_IMAGES:
213 | file = urlopen(self.data[name]["image_url"])
214 | raw_data = file.read()
215 | file.close()
216 | image = Image.open(io.BytesIO(raw_data))
217 | file_data = customtkinter.CTkImage(image, size=(self.height, self.height*image.size[1]/image.size[0]))
218 | self.LOADED_IMAGES[name] = file_data
219 | return self.LOADED_IMAGES[name]
220 | except:
221 | return None
222 |
223 | def get_stars_and_avatar(self, name):
224 | """Get the github star count of the package"""
225 | try:
226 | url = self.data[name]["repo_url"]
227 | repo_owner, repo_name = url.split('/')[-2:]
228 |
229 | response = urlopen(f"https://api.github.com/repos/{repo_owner}/{repo_name}")
230 | data = json.load(response)
231 |
232 | return data["stargazers_count"], data["owner"]["avatar_url"]
233 | except Exception as e:
234 | return None, None
235 |
236 | def open_info_window(self, name):
237 | """ open the detail panel for the package """
238 |
239 | toplevel = customtkinter.CTkToplevel(self)
240 | toplevel.title(name)
241 | toplevel.transient(self)
242 | spawn_x = int(self.winfo_width() * .5 + self.winfo_x() - .5 * (self.width - 150) + 7)
243 | spawn_y = int(self.winfo_height() * .5 + self.winfo_y() - .5 * (self.height - 150) + 20)
244 | toplevel.geometry(f"{self.width-150}x{self.height-150}+{spawn_x}+{spawn_y}")
245 | toplevel.resizable(False, False)
246 | toplevel.wm_iconbitmap()
247 | toplevel.after(300, lambda: toplevel.iconphoto(False, self.iconpath))
248 |
249 | scrollable_info = customtkinter.CTkScrollableFrame(toplevel)
250 | scrollable_info.pack(fill="both", padx=10, pady=10, expand=True)
251 |
252 | image_label = customtkinter.CTkLabel(scrollable_info, fg_color=["grey86", "grey16"], height=200, corner_radius=20, text="Image is Loading...")
253 | image_label.pack(fill="both", padx=10, pady=10, expand=True)
254 |
255 | def add_image():
256 | file_data = self.get_image(name)
257 | if not toplevel.winfo_exists():
258 | return
259 | if file_data:
260 | image_label.configure(image=file_data, text="", fg_color="transparent", corner_radius=0, height=1)
261 | else:
262 | image_label.pack_forget()
263 |
264 | threading.Thread(target=add_image, daemon=True).start()
265 |
266 | label_name = customtkinter.CTkLabel(scrollable_info, text=name, anchor="w", font=(self.font, 25, "bold"))
267 | label_name.pack(fill="x", padx=10, pady=5)
268 |
269 | label_desc = customtkinter.CTkLabel(scrollable_info, text=self.data[name]["full_desc"], anchor="w", wraplength=self.width-250,
270 | justify="left", font=(self.font,14))
271 | label_desc.pack(fill="x", padx=10, pady=10)
272 |
273 | label_owner = customtkinter.CTkLabel(scrollable_info, text=f"Author", anchor="w", font=(self.font, 18, "bold"))
274 | label_owner.pack(fill="x", padx=10)
275 |
276 | author = customtkinter.CTkButton(scrollable_info, text=self.data[name]["author"], anchor="w", font=(self.font, 16), hover=False, fg_color="transparent")
277 | author.pack(fill="x", padx=10, pady=(0,10))
278 |
279 | frame_link = customtkinter.CTkFrame(scrollable_info, fg_color="transparent")
280 | self.repo = customtkinter.CTkLabel(frame_link, text="Repository Link: ", font=(self.font,14,"bold"))
281 | self.repo.pack(anchor="w", side="left")
282 |
283 | label_stars = customtkinter.CTkButton(scrollable_info, text=f"Stars: ", anchor="w", font=(self.font, 15, "bold"), image=self.starimage,
284 | compound="left", hover=False, fg_color="transparent")
285 | label_stars.pack(fill="x", padx=(0, 10))
286 |
287 | def add_stats_avatar():
288 | stars, avatar_url = self.get_stars_and_avatar(name)
289 |
290 | if avatar_url:
291 | avatar = urlopen(avatar_url)
292 | raw_data = avatar.read()
293 | avatar.close()
294 | image = Image.open(io.BytesIO(raw_data))
295 | file_data = customtkinter.CTkImage(image, size=(30,30))
296 | if toplevel.winfo_exists():
297 | author.configure(image=file_data, compound="left")
298 | if not toplevel.winfo_exists():
299 | return
300 | if stars:
301 | label_stars.configure(text=f"Stars: {stars}")
302 | else:
303 | label_stars.configure(text="Stars: Not Available")
304 |
305 | threading.Thread(target=add_stats_avatar, daemon=True).start()
306 |
307 | repo_link = customtkinter.CTkLabel(frame_link, text=self.data[name]["repo_url"], font=(self.font,15), text_color=["blue","cyan"])
308 | repo_link.pack(anchor="w", side="left")
309 | frame_link.pack(padx=10, anchor="w")
310 |
311 | repo_link.bind("", lambda event: webbrowser.open_new_tab(self.data[name]["repo_url"]))
312 | repo_link.bind("", lambda event: repo_link.configure(font=(self.font,15,"underline"), cursor="hand2"))
313 | repo_link.bind("", lambda event: repo_link.configure(font=(self.font,15), cursor="arrow"))
314 |
315 | features = ""
316 | for i in self.data[name]["highlights"]:
317 | features+= f"• {i}\n"
318 | features = features.strip()
319 |
320 | heighlights_label = customtkinter.CTkLabel(scrollable_info, text="Features:", anchor="w", font=(self.font, 15, "bold"))
321 | heighlights_label.pack(fill="x", padx=10, pady=(0, 0))
322 |
323 | highlights = customtkinter.CTkLabel(scrollable_info, text=features, anchor="w", justify="left", font=(self.font, 14))
324 | highlights.pack(fill="x",padx=(20, 10), pady=5)
325 |
326 | label_install = customtkinter.CTkLabel(scrollable_info, text=f"Installation type: {self.data[name]['type']}", anchor="w", font=(self.font, 15, "bold"))
327 | label_install.pack(fill="x", padx=12, pady=5)
328 |
329 | def on_entry_click(event):
330 | text = entry_pip.get()
331 | self.clipboard_clear()
332 | self.clipboard_append(text)
333 |
334 | entry_pip = customtkinter.CTkEntry(scrollable_info)
335 | entry_pip.pack(fill="x", padx=10, pady=(0,10))
336 | entry_pip.insert(0,self.data[name]["installation"])
337 | entry_pip.configure(state="readonly")
338 |
339 | entry_pip.bind('', on_entry_click)
340 |
341 | def read_database(self):
342 | """ read the database containing package data """
343 | database = os.path.join(App.DIRPATH, "assets", "database.json")
344 | if os.path.exists(database):
345 | with open(database) as f:
346 | self.data = json.load(f)
347 | for i in self.data.keys():
348 | self.add_item(name=i, icon=self.data[i]["icon"])
349 |
350 | if __name__ == "__main__":
351 | app = App()
352 | app.mainloop()
353 |
--------------------------------------------------------------------------------