STkWidgets
A collection of custom Tkinter widgets that extend the standard toolkit with modern UI features. Useful for building desktop apps with a cleaner and more functional interface.
Installation
pip install .
Example:
import customtkinter as ct
from stk_widgets import ToolTip, OptionList, PasswordEntry, Spinner, ArcSpinner, VerticalTab, ClickableLabel,
CircleButton, stkmessagebox, StkFileDialog, layouts,STk, screenshot_frame
from stk_widgets.window.layouts import DraggableWidget
STk is a rudimentary attempt at a custom window, it is very buggy so only use if you can fix or are okay with it
It's preferable to use regular tk, ttk or ctk
root = STk()
root.set_title("Test Application") root.geometry("500x500")
Adds the default buttons for window control
root.add_default_winbtns()
entry = PasswordEntry(root.set_titlebar.right_container)
x =ct.CTkSegmentedButton(root.set_titlebar.right_container, values=["system", "light", "dark"], command=lambda e: ct.set_appearance_mode(e))
#add widgets to title bar root.add_widget_to_titlebar(entry) root.add_widget_to_titlebar(x)
Vertical tabview
tabview = VerticalTab(root, width=600, height=400) tabview.pack(fill="both", expand=True)
button = ct.CTkButton(root, text="take screenshot", command=lambda: screenshot_frame(root, "screenshots")) button.pack() ToolTip(button, "hey, I can take screenshots.")
Add tabs
tab1 = tabview.add_tab("Home", button_style="circular")#button styles [circular, regular] ct.CTkLabel(tab1, text="This is the Home tab").pack(pady=20)
tab2 = tabview.add_tab("Settings") ct.CTkLabel(tab2, text="This is the Settings tab").pack(pady=20)
tab3 = tabview.add_tab("About") ct.CTkLabel(tab3, text="This is the About tab").pack(pady=20)
frame = ct.CTkFrame(tab1) frame.pack(padx=20, pady=20, fill="both", expand=True)
Appears on left click and displays a group of options
options = OptionList(frame)
Adds a label to the widget, also takes in a font argument
options.add_label("File Options")
#add buttons, buttons also take in argument like hover and color options.add_button("Open", command=lambda: print("open clicked")) options.add_button("Delete", color="red", command=lambda: print("delete clicked")) options.add_button("Restore", command=lambda: print("restore clicked")) lab = ct.CTkLabel(tab3) lab.pack()
A password entry with show and hide
p = PasswordEntry(tab3, password_hide_text="hide", password_show_text="show") p.pack()
A circular button
CircleButton(tab2, text="Click me", command=lambda: StkFileDialog(root, "just testing")).pack(pady=20)
#a clickable label, can be used for links or anything of the sort ClickableLabel(tab3, text="This is the About tab", command=lambda :stkmessagebox.showinfo("Info", "This is a messagebox")).pack(pady=20)
Loading animations
Spinner(root).pack(pady=20, expand=True, fill="both") ArcSpinner(root).pack(pady=20, expand=True, fill="both")
btn = ct.CTkButton(tab3, text="testing layout and drag") btn2 = ct.CTkButton(tab3,text="testing layout") btn3 = ct.CTkButton(tab3, text="testing layout")
Arranges widgets in a list, other layouts include:
#layouts.WeightedGridLayout #layouts.VerticalListLayout #layouts.GridLayout layouts.ListLayout([btn, btn2, btn3])
Makes widgets draggable
DraggableWidget( btn, constrain_to_parent=False #detemines if the widget should be constrained to its parent/master )
root.mainloop()
Available Widgets
CirularButton → a completely circular button
PasswordEntry → Entry widget with show and hide functionality
ClickableLabel → A label that can be clicked, useful for links
Spinner & ArcSpinner → loading animations
Tooltip → a tooltip that appears on hover
OptionList → appears on left-click and displays options
TyperWriterEffect → not a widget but simulates typewiter effect on given widget
VerticalTab → like ctktabview but vertical
stkmessagebox → a themed messagebox
STkMenuBar → a custom themed implementation of the menubar
STkFileDialog → a custom filedialog implementation
Requirements
Python 3.8+
Tkinter
CustomTkinter
Pillow
License
This project is licensed under the Apache License 2.0 - see the [LICENSE] file for details
Metadata
Release files for stk-widgets 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| stk_widgets-0.1.3.tar.gz | 4.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| stk_widgets-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.7 MB
Release files / stk_widgets-0.1.3.tar.gz
| Download URL | stk_widgets-0.1.3.tar.gz |
|---|---|
| Size | 4.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3188b8a7716fc3ff149d30db546fa8cbec600bd5bd1237781e6438383bc7e1d0
|
|
BLAKE2b-256 checksum How to use checksums |
db3615ffe2402ade51f45151e10dba8518b7ebdd4949445ee590de633dd1e2fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / stk_widgets-0.1.3-py3-none-any.whl
| Download URL | stk_widgets-0.1.3-py3-none-any.whl |
|---|---|
| Size | 4.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6814698a228b30b9bb705533383a93a793f3f61da8ef8cf9c7d5992a1f3b7db8
|
|
BLAKE2b-256 checksum How to use checksums |
2fa6ffe5ade422920980e58a87f7940a263a5ed437c34a34cf10f00b5a769043
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|