Skip to main content

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)

Source distribution for stk-widgets 0.1.3
File Size Uploaded
stk_widgets-0.1.3.tar.gz 4.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for stk-widgets 0.1.3
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page