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.2.tar.gz (24.8 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.2-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stk_widgets-0.1.2.tar.gz
  • Upload date:
  • Size: 24.8 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.2.tar.gz
Algorithm Hash digest
SHA256 c2f7b7c8d34d33d043325b54729b34a28854f652f30c923e7be614ede8806a8b
MD5 7b03ba8a352fd22fe018658967e903af
BLAKE2b-256 c73140a8f897196de63debd80c567fc5d66b37b4a6f8f285623e19bdf8ee2579

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stk_widgets-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 28.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 946ab64c327567f9d129fae711e31c77fbedb83e865b706a1450d6a5bb6fe4ca
MD5 4edcb4083334a3b87fd3f44e9184524b
BLAKE2b-256 1853f07cddb74826540ce30eca33f0f8b80dbca407126381928ab725d5c20967

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