Skip to main content

Custom widgets for tkinter

Project description

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


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stk_widgets-0.1.1.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stk_widgets-0.1.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file stk_widgets-0.1.1.tar.gz.

File metadata

  • Download URL: stk_widgets-0.1.1.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for stk_widgets-0.1.1.tar.gz
Algorithm Hash digest
SHA256 88f1fcc89613cb93789a869fb2e31334f1690b1d78fdc85c8a74498c2fe8cca7
MD5 275ec452b0fe6ea3b03b905ccbc6ec36
BLAKE2b-256 00d841a08082c9b319241c7307f98b5016a940fd4c2e89711252e7694a839c6a

See more details on using hashes here.

File details

Details for the file stk_widgets-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: stk_widgets-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for stk_widgets-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8d7d0c4099bec55336fdadab3b94ece38e9ea6b38d88a8e4c07d2f8594adf3d1
MD5 64be77d482f2c97ac14d856a21e815c1
BLAKE2b-256 9fff5bdcd908769948c68952107273009ed96cdd0ab3fc1cb390274ff754c932

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page