explaingit

tomschimansky/customtkinter

13,344PythonAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

CustomTkinter is a Python library that replaces Tkinter's dated-looking default widgets with modern, dark-mode-aware controls that look current on Windows, macOS, and Linux without restructuring your existing code.

Mindmap

mindmap
  root((CustomTkinter))
    What it does
      Modern widgets
      Dark mode
      HiDPI scaling
    Widgets
      Buttons
      Sliders
      Tab views
      Dropdowns
    Features
      Themes
      Tkinter compatible
      pip install
    Use cases
      Desktop apps
      Settings UI
      Internal tools
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a desktop app window with modern-looking buttons, sliders, and dropdowns using familiar Tkinter code patterns

USE CASE 2

Add automatic dark mode support to an existing Tkinter app by swapping widget class names for CustomTkinter equivalents

USE CASE 3

Create a settings UI with tab views, scrollable frames, and checkboxes that renders correctly on high-DPI monitors

USE CASE 4

Apply a built-in or custom color theme to standardize the visual style of a Python desktop tool

Tech stack

PythonTkinter

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any personal or commercial project without any restrictions.

In plain English

CustomTkinter is a Python library for building desktop application windows with a modern visual style. It builds on top of Tkinter, which is the standard GUI toolkit bundled with Python, but replaces its dated-looking buttons, sliders, checkboxes, and other controls with redesigned versions that look current on Windows, macOS, and Linux. The main thing CustomTkinter adds is automatic support for light and dark modes. If the operating system is set to dark mode, CustomTkinter windows and widgets switch their colors automatically. You can also force a specific mode in code. All widgets also support high-DPI scaling, which means they appear at the right size on monitors with high pixel density, such as Retina displays on Mac or 4K screens on Windows. Because CustomTkinter uses the same programming model as standard Tkinter, existing code does not need to be restructured to use it. You swap the standard widget classes for CustomTkinter equivalents, and they behave the same way. You can also mix CustomTkinter widgets with regular Tkinter elements in the same window. The library ships with a few built-in color themes, including blue, dark-blue, and green, and supports custom themes. The available widgets include buttons, labels, input fields, sliders, checkboxes, radio buttons, dropdown menus, progress bars, scrollable frames, tab views, and segmented buttons, among others. The README includes code examples showing a minimal working window, and the documentation website covers each widget's options in detail. CustomTkinter is installed with a single pip command and is licensed under MIT, which allows free use in personal and commercial projects. The project is actively maintained and documents its API on an official website.

Copy-paste prompts

Prompt 1
Show me how to build a settings window in CustomTkinter with a slider, checkbox, dropdown, and a dark/light mode toggle button
Prompt 2
How do I convert an existing Tkinter script to use CustomTkinter, and which widget class names need to change?
Prompt 3
Create a CustomTkinter app with a CTkTabview where each tab contains a different input form
Prompt 4
How do I define a custom color theme JSON file in CustomTkinter and apply it to my entire app?
Prompt 5
Show me how to use CTkScrollableFrame in CustomTkinter to display a dynamically growing list of labeled rows
Open on GitHub → Explain another repo

← tomschimansky on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.