CustomTkinter README

The project's README from github.com/TomSchimansky/CustomTkinter. As one markdown file: README.md.

PyPI PyPI - Downloads Downloads last 6 month PyPI - License Minimum Python Version


Current Developers Contact
Tom Schimansky [email protected]
Federico Spada www.linkedin.com/in/federicospada13

Paypal donation button


Official website: https://customtkinter.tomschimansky.com/

CustomTkinter is a python UI-library based on Tkinter, which provides new, modern and fully customizable widgets. They are created and used like normal Tkinter widgets and can also be used in combination with normal Tkinter elements. The widgets and the window colors either adapt to the system appearance or the manually set mode ('light', 'dark'), and all CustomTkinter widgets and windows support HighDPI scaling (Windows, macOS). With CustomTkinter you'll get a consistent and modern look across all desktop platforms (Windows, macOS, Linux).

| complex_example.py on Windows 11 with dark mode and 'blue' theme

| complex_example.py on macOS in light mode and standard 'blue' theme

Installation

Install the module with pip:

pip3 install customtkinter

Update existing installation: pip3 install customtkinter --upgrade
(update as often as possible because this library is under active development)

Documentation

The official documentation can be found here:

➡️ https://customtkinter.tomschimansky.com/documentation.

Example Program

To test customtkinter you can try this simple example with only a single button:

import customtkinter

customtkinter.set_appearance_mode("System")  # Modes: system (default), light, dark
customtkinter.set_default_color_theme("blue")  # Themes: blue (default), dark-blue, green

app = customtkinter.CTk()  # create CTk window like you do with the Tk window
app.geometry("400x240")

def button_function():
    print("button pressed")

# Use CTkButton instead of tkinter Button
button = customtkinter.CTkButton(master=app, text="CTkButton", command=button_function)
button.place(relx=0.5, rely=0.5, anchor=customtkinter.CENTER)

app.mainloop()

which results in the following window on macOS:

In the examples folder, you can find more example programs and in the Documentation you can find further information on the appearance mode, scaling, themes and all widgets.

More Examples and Showcase

You can run the following code to show a simple App that displays all available widgets:

import customtkinter as ctk
ctk.run_showroom()

Appearance mode change and scaling change

CustomTkinter can adapt to the Windows 10/11 light or dark mode:

https://user-images.githubusercontent.com/66446067/204672968-6584f360-4c52-434f-9c16-25761341368b.mp4

| complex_example.py on Windows 11 with system appearance mode change and standard 'blue' theme

On macOS you either need python3.10 or higher or the anaconda python version to get a dark window header (Tcl/Tk >= 8.6.9 required):

https://user-images.githubusercontent.com/66446067/204673854-b6cbcfda-d9a1-4425-92a3-5b57d7f2fd6b.mp4

| complex_example.py on macOS with system appearance mode change, user-scaling change and standard 'blue' theme

Button with images

It's possible to put an image on a CTkButton. You just have to pass a PhotoImage object to the CTkButton with the image argument. If you want no text at all you have to set text="" or you specify how to position the text and image at once with the compound option:

| image_example.py on Windows 11

Scrollable Frames

Scrollable frames are possible in vertical or horizontal orientation and can be combined with any other widgets. | scrollable_frame_example.py on Windows 11

Integration of TkinterMapView widget

In the following example I used a TkinterMapView which integrates well with a CustomTkinter program. It's a tile based map widget which displays OpenStreetMap or other tile based maps:

https://user-images.githubusercontent.com/66446067/204675835-1584a8da-5acc-4993-b4a9-e70f06fa14b0.mp4

| examples/map_with_customtkinter.py from TkinterMapView repository on Windows 11

You can find the TkinterMapView library and example program here: https://github.com/TomSchimansky/TkinterMapView

CustomTkinter (TomSchimansky/CustomTkinter)

Searching Database…

Что это такое?CustomTkinter — это Python-библиотека для интерфейсов, построенная на основе Tkinter. Она даёт современные и полностью настраиваемые виджеты, чтобы у десктопных приложений был единый актуальный внешний вид на Windows, macOS и Linux.
Так это замена Tkinter или надстройка над ним?Это надстройка, а не замена: виджеты создаются и используются точно так же, как обычные виджеты Tkinter, и их можно свободно смешивать с обычными элементами Tkinter в одном приложении.
Как добавить её в проект?Устанавливается с PyPI через pip: pip install customtkinter. В README советуют почаще обновлять библиотеку (тоже через pip), потому что она активно развивается.
Нужно ли что-то особенное, кроме обычного Python?Нет, достаточно Python. Единственный нюанс — macOS: чтобы получить тёмный заголовок окна, нужен Python 3.10 или выше либо версия от Anaconda, так как требуется Tcl/Tk >= 8.6.9.
Приложения будут чётко выглядеть на экранах с высоким разрешением (HiDPI) на любой ОС?Масштабирование HiDPI подтверждено для Windows и macOS — только эти две платформы названы в README. В Linux внешний вид такой же современный, но поддержки масштабирования там не заявлено.
Она подстраивается под тёмную тему моей системы?Да. Цвета виджетов и окна автоматически подстраиваются под оформление системы, а можно задать режим вручную — 'light' или 'dark', включая тёмную тему Windows 10/11.
Насколько внешний вид можно настраивать, кроме тёмной темы?Виджеты полностью настраиваемые, и есть темы — в примерах из README используется стандартная тема 'blue', а в документации описаны режим оформления, масштабирование, темы и каждый виджет.
Можно ли вставить картинку на кнопку?Да — передайте объект PhotoImage в CTkButton через аргумент image. Задайте text='', чтобы сделать кнопку только с картинкой, или используйте опцию compound, чтобы управлять тем, как текст и картинка располагаются вместе.
Там есть прокручиваемые фреймы?Да, и вертикальные, и горизонтальные, причём прокручиваемые фреймы можно сочетать с любыми другими виджетами.
Можно ли встроить карту в приложение?Встроенной нет, но библиотека автора TkinterMapView хорошо сочетается с CustomTkinter — это виджет карты на основе тайлов, который показывает OpenStreetMap и другие тайловые карты.
Size
147.6 MB
Stars
13.6K
Updated
CommitJun 24
Age
5y
Commits · 90 Days