Skip to main content


The CTk class forms the basis of any CustomTkinter program, it creates the main app window. During the runtime of a program there should only be one instance of this class with a single call of the .mainloop() method, which starts the app. Additional windows are created using the CTkToplevel class.

Example Code

Example without using classes:

app = customtkinter.CTk()
app.title("CTk example")


Example with classes:

class App(customtkinter.CTk):
def __init__(self):
self.title("CTk example")

# add widgets to app
self.button = customtkinter.CTkButton(self, command=self.button_click)
self.button.grid(row=0, column=0, padx=20, pady=10)

# add methods to app
def button_click(self):
print("button click")

app = App()


fg_colorwindow background color, tuple: (light_color, dark_color) or single color


  • .configure(attribute=value, ...)

    All attributes can be configured and updated, for example:

  • .cget(attribute_name)

    Pass attribute name as string and get current value of attribute, for example:

    fg_color = app.cget("fg_color")
  • .title(string)

    Set title of window.

  • .geometry(geometry_string)

    Set geometry and positions of the window like this: "<width>x<height>" or "<width>x<height>+<x_pos>+<y_pos>"

  • .minsize(width, height)

    Set minimal window size.

  • .maxsize(width, height)

    Set max window size.

  • .resizable(width, height)

    Define, if width and/or height should be resizablee with bool values.

  • .after(milliseconds, command)

    Execute command after milliseconds without blocking the main loop.

  • .withdraw()

    Hide window and icon. Restore it with .deiconify().

  • .iconify()

    Iconifies the window. Restore it with .deiconify().

  • .deiconify()

    Deiconify the window.

  • .state(new_state)

    Set the window state ('normal', 'iconic', 'withdrawn', 'zoomed'), returns current state if no argument is passed.