Skip to content
Shop

CommunityJoin Our DiscordDonate

Sponsored Ads

Sponsored Ads

Tkinter ​

Showing a Window ​

It's easy to create a desktop application with Tkinter.

  1. Import tkinter
  2. Create a window instance,
  3. Set the title of the window,
  4. Run the window in a mainloop.
python
import tkinter
window = tkinter.Tk()
window.title = "My Special App"

# widgets are added here

window.mainloop()

Button Commands ​

python
import tkinter as tk
window = tk.Tk()
window.title('Counting Seconds')
button = tk.Button(window, text='Stop', width=25, command=window.destroy)
button.pack()
window.mainloop()

Draw on a Canvas ​

python
from tkinter import *
master = Tk()
w = Canvas(master, width=40, height=60)
w.pack()
canvas_height=20
canvas_width=200
y = int(canvas_height / 2)
w.create_line(0, y, canvas_width, y )
mainloop()

Check A Button ​

python
from tkinter import *
master = Tk()
var1 = IntVar()
Checkbutton(master, text='male', variable=var1).grid(row=0, sticky=W)
var2 = IntVar()
Checkbutton(master, text='female', variable=var2).grid(row=1, sticky=W)
mainloop()

Entering Text ​

You can enter text in an Entry field.

python
from tkinter import *
master = Tk()
Label(master, text='First Name').grid(row=0)
Label(master, text='Last Name').grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
mainloop()

List Box ​

python
from tkinter import *
 
top = Tk()
Lb = Listbox(top)
Lb.insert(1, 'Python')
Lb.insert(2, 'Java')
Lb.insert(3, 'C++')
Lb.insert(4, 'Any other')
Lb.pack()
top.mainloop()
python
from tkinter import *
     
root = Tk()
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label='File', menu=filemenu)
filemenu.add_command(label='New')
filemenu.add_command(label='Open...')
filemenu.add_separator()
filemenu.add_command(label='Exit', command=root.quit)
helpmenu = Menu(menu)
menu.add_cascade(label='Help', menu=helpmenu)
helpmenu.add_command(label='About')
mainloop()

Text ​

python
from tkinter import *
root = Tk()
T = Text(root, height=2, width=30)
T.pack()
T.insert(END, 'GeeksforGeeks\nBEST WEBSITE\n')
mainloop()

Top Level ​

python
from tkinter import *
root = Tk()
root.title('GfG')
top = Toplevel()
top.title('Python')
top.mainloop()

Geometry ​

python
# Importing tkinter module
from tkinter import * 
from tkinter.ttk import *
 
# creating Tk window
master = Tk()
 
# setting geometry of tk window
master.geometry("200x200")
 
# button widget
b1 = Button(master, text = "Click me !")
b1.place(relx = 1, x =-2, y = 2, anchor = NE)
 
# label widget
l = Label(master, text = "I'm a Label")
l.place(anchor = NW)
 
# button widget
b2 = Button(master, text = "GFG")
b2.place(relx = 0.5, rely = 0.5, anchor = CENTER)
 
# infinite loop which is required to
# run tkinter program infinitely
# until an interrupt occurs
mainloop()

Grid ​

python
# import tkinter module
from tkinter import * 
from tkinter.ttk import *
 
# creating main tkinter window/toplevel
master = Tk()
 
# this will create a label widget
l1 = Label(master, text = "First:")
l2 = Label(master, text = "Second:")
 
# grid method to arrange labels in respective
# rows and columns as specified
l1.grid(row = 0, column = 0, sticky = W, pady = 2)
l2.grid(row = 1, column = 0, sticky = W, pady = 2)
 
# entry widgets, used to take entry from user
e1 = Entry(master)
e2 = Entry(master)
 
# this will arrange entry widgets
e1.grid(row = 0, column = 1, pady = 2)
e2.grid(row = 1, column = 1, pady = 2)
 
# infinite loop which can be terminated by keyboard
# or mouse interrupt
mainloop()

Pack ​

python
# Importing tkinter module
from tkinter import * from tkinter.ttk import *
 
# creating Tk window
master = Tk()
 
# creating a Fra, e which can expand according
# to the size of the window
pane = Frame(master)
pane.pack(fill = BOTH, expand = True)
 
# button widgets which can also expand and fill
# in the parent widget entirely
# Button 1
b1 = Button(pane, text = "Click me !")
b1.pack(fill = BOTH, expand = True)
 
# Button 2
b2 = Button(pane, text = "Click me too")
b2.pack(fill = BOTH, expand = True)
 
# Execute Tkinter
master.mainloop()

Functions ​

python
# Import all files from
# tkinter and overwrite
# all the tkinter files
# by tkinter.ttk
from tkinter import *
from tkinter.ttk import *
 
# creates tkinter window or root window
root = Tk()
root.geometry('200x100')
 
# function to be called when mouse enters in a frame
def enter(event):
    print('Button-2 pressed at x = % d, y = % d'%(event.x, event.y))
 
# function to be called when mouse exits the frame
def exit_(event):
    print('Button-3 pressed at x = % d, y = % d'%(event.x, event.y))
 
# frame with fixed geometry
frame1 = Frame(root, height = 100, width = 200)
 
# these lines are showing the
# working of bind function
# it is universal widget method
frame1.bind('<Enter>', enter)
frame1.bind('<Leave>', exit_)
 
frame1.pack()
 
mainloop()

Double CLick ​

python
from tkinter import *
   
def go(event): 
    cs = Lb.curselection() 
      
    # Updating label text to selected option 
    w.config(text=Lb.get(cs)) 
      
    # Setting Background Colour 
    for list in cs: 
          
        if list == 0: 
            top.configure(background='red') 
        elif list == 1: 
            top.configure(background='green') 
        elif list == 2: 
            top.configure(background='yellow') 
        elif list == 3: 
            top.configure(background='white') 
   
   
top = Tk() 
top.geometry('250x275') 
top.title('Double Click') 
   
# Creating Listbox 
Lb = Listbox(top, height=6) 
# Inserting items in Listbox 
Lb.insert(0, 'Red') 
Lb.insert(1, 'Green') 
Lb.insert(2, 'Yellow') 
Lb.insert(3, 'White') 
   
# Binding double click with left mouse 
# button with go function 
Lb.bind('<Double-1>', go) 
Lb.pack() 
   
# Creating Edit box to show selected option 
w = Label(top, text='Default') 
w.pack() 
top.mainloop()

Right Click ​

python
import tkinter 
from tkinter import *
  
root = Tk() 
  
L = Label(root, text ="Right-click to display menu", 
          width = 40, height = 20) 
L.pack() 
  
m = Menu(root, tearoff = 0) 
m.add_command(label ="Cut") 
m.add_command(label ="Copy") 
m.add_command(label ="Paste") 
m.add_command(label ="Reload") 
m.add_separator() 
m.add_command(label ="Rename") 
  
def do_popup(event): 
    try: 
        m.tk_popup(event.x_root, event.y_root) 
    finally: 
        m.grab_release() 
  
L.bind("<Button-3>", do_popup) 
  
mainloop()

Images ​

python
import tkinter 
from tkinter import *
  
root = Tk() 
  
L = Label(root, text ="Right-click to display menu", 
          width = 40, height = 20) 
L.pack() 
  
m = Menu(root, tearoff = 0) 
m.add_command(label ="Cut") 
m.add_command(label ="Copy") 
m.add_command(label ="Paste") 
m.add_command(label ="Reload") 
m.add_separator() 
m.add_command(label ="Rename") 
  
def do_popup(event): 
    try: 
        m.tk_popup(event.x_root, event.y_root) 
    finally: 
        m.grab_release() 
  
L.bind("<Button-3>", do_popup) 
  
mainloop()

CustomTKinter ​

CustomTkinter is an updated version of Tkinter that focuses on the look and feel of Tkinter, making the application look more modern.

python
pip3 install customtkinter
python
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()
Advanced Example
python
import tkinter
import tkinter.messagebox
import customtkinter
from tkinter import ttk
from customtkinter import *
import os
import re
from PIL import Image, ImageTk
import random
# Modes: "System" (standard), "Dark", "Light"
customtkinter.set_appearance_mode("dark")
# Themes: "blue" (standard), "green", "dark-blue"
customtkinter.set_default_color_theme("green")

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()
        self.current_prompts = []

        # configure window
        self.title("Sample App")
        self.geometry(f"{1100}x{820}")

        # configure grid layout (4x4)
        self.grid_columnconfigure(1, weight=1)
        self.grid_columnconfigure((2, 3), weight=0)
        self.grid_rowconfigure((0, 1, 2), weight=1)

        # image_path = os.path.join(os.path.dirname(
        #     os.path.realpath(__file__)), "test_images")
        # self.logo_image = CTkImage(Image.open(
        #     os.path.join(image_path, "star.png")), size=(20, 20))
        # self.bg_image_label = customtkinter.CTkLabel(
        #     self, image=self.logo_image)

        # create sidebar frame with widgets
        self.sidebar_frame = CTkFrame(self, 
                                      width=140, 
                                      height=300, 
                                      corner_radius=0)
        self.sidebar_frame.grid(row=0, 
                                column=0, 
                                rowspan=4, 
                                sticky="nsew")
        self.sidebar_frame.grid_rowconfigure(4, weight=1)
        
        self.logo_label = CTkLabel(self.sidebar_frame, 
                                   text="Sample App", 
                                   font=CTkFont(size=20, weight="bold"))
        self.logo_label.grid(row=0, 
                             column=0, 
                             padx=20, 
                             pady=(20, 10))
        
        self.string_input_button_generate = CTkButton(
            self.sidebar_frame, text="Generate", command=self.generate_prompt)
        self.string_input_button_generate.grid(
            row=1, column=0, padx=20, pady=10)
        
        self.button_clear = CTkButton(
            self.sidebar_frame, text="Clear", command=self.clear_prompts)
        self.button_clear.grid(row=2, column=0, padx=20, pady=10)
        
        self.button_new_chat = CTkButton(
            self.sidebar_frame, command=self.sidebar_button_event, text="+ New chat")
        self.button_new_chat.grid(row=3, column=0, padx=20, pady=10)
        
        # self.button_marketing = CTkButton(self.sidebar_frame, 
        #                                   command=self.sidebar_button_event, 
        #                                   text="Specials", 
        #                                   image=self.logo_image)
        # self.button_marketing.grid(row=4, column=0, padx=20, pady=10)
        
        self.button_side_bar_disabled = CTkButton(self.sidebar_frame, command=self.sidebar_button_event)
        self.button_side_bar_disabled.grid(row=5, 
                                           column=0, 
                                           padx=20, 
                                           pady=10)
        
        self.appearance_mode_label = CTkLabel(
            self.sidebar_frame, text="Appearance Mode:", anchor="w")
        self.appearance_mode_label.grid(row=6, column=0, padx=20, pady=(10, 0))
        self.appearance_mode_optionemenu = CTkOptionMenu(self.sidebar_frame, 
                                                         values=["Light", "Dark", "System"],
                                                         command=self.change_appearance_mode_event)
        self.appearance_mode_optionemenu.grid(row=6, 
                                              column=0, 
                                              padx=20, 
                                              pady=(10, 10))
        
        self.scaling_label = CTkLabel(
            self.sidebar_frame, text="UI Scaling:", anchor="w")
        self.scaling_label.grid(row=7, column=0, padx=20, pady=(10, 0))
        self.scaling_optionemenu = CTkOptionMenu(self.sidebar_frame, 
                                                 values=["80%", "90%", "100%", "110%", "120%"],
                                                 command=self.change_scaling_event)
        self.scaling_optionemenu.grid(row=8, 
                                      column=0, 
                                      padx=20, 
                                      pady=(10, 20))

        # create main entry and button
        self.entry = CTkEntry(
            self, placeholder_text="Send a message")
        self.entry.grid(row=3, column=1, columnspan=2, padx=(
            20, 0), pady=(20, 20), sticky="nsew")

        self.main_button_1 = CTkButton(master=self, 
                                       fg_color="transparent", 
                                       text="Send", 
                                       border_width=2, 
                                       text_color=("gray10", "#DCE4EE"))
        self.main_button_1.grid(row=3, 
                                column=3, 
                                padx=(20, 20), 
                                pady=(20, 20), 
                                sticky="nsew")

        # create textbox
        self.textbox = CTkTextbox(self, 
                                  width=250, 
                                  font=CTkFont(size=20, weight="normal"))
        self.textbox.grid(row=0, 
                          column=1, 
                          padx=(20, 0), 
                          pady=(20, 0), 
                          sticky="nsew")
        
        self.textbox_prompts = CTkTextbox(self, 
                                          width=250, 
                                          font=CTkFont(size=16, weight="normal"))
        self.textbox_prompts.grid(row=2, 
                                  column=1, 
                                  padx=(20, 0), 
                                  pady=(20, 0), 
                                  sticky="nsew")
        with open("prompts.txt", 'a+', encoding='utf-8') as f:
            contents = f.read().splitlines()
            self.textbox_prompts.insert('0.0', contents)

        # self.textbox_2 = CTkTextbox(self, width=250)
        # self.textbox_2.grid(row=0, column=1, padx=(20, 0), pady=(90, 0), sticky="nsew")

        # create tabview
        self.tabview = CTkTabview(self, width=250)
        self.tabview.grid(row=0, column=2, padx=(
            20, 0), pady=(20, 0), sticky="nsew")
        self.tabview.add("Main")
        self.tabview.add("L&C")
        self.tabview.add("Action")
        self.tabview.tab("Main").grid_columnconfigure(
            0, weight=1)  # configure grid of individual tabs
        self.tabview.tab("L&C").grid_columnconfigure(0, weight=1)

        # option = StringVar(value="Select an option")
        # options = ["a", "b", "c"]
        self.menu_persona = CTkOptionMenu(self.tabview.tab("Main"), dynamic_resizing=False,
                                                        values=["Man", "Woman"])
        self.menu_persona.grid(row=0, column=0, padx=20, pady=(20, 10))
        
        self.label_media = CTkLabel(self.tabview.tab(
            "Main"), text="Media", anchor="w")
        self.label_media.grid(row=1, column=0, padx=20, pady=(10, 0))
        
        self.menu_media = CTkComboBox(self.tabview.tab(
            "Main"), values=['one'])
        self.menu_media.grid(row=2, column=0, padx=20, pady=(10, 10))
        self.label_media = CTkLabel(self.tabview.tab(
            "Main"), text="Location", anchor="w")
        self.label_media.grid(row=3, column=0, padx=20, pady=(10, 0))
        
        self.menu_location = CTkComboBox(self.tabview.tab(
            "Main"), values=['again'])
        self.menu_location.grid(row=4, column=0, padx=20, pady=(10, 10))

        self.string_input_button_generate = CTkButton(
            self.tabview.tab("Main"), text="Generate", command=self.generate_prompt)
        self.string_input_button_generate.grid(
            row=5, column=0, padx=20, pady=(10, 10))
        
        self.string_input_button = CTkButton(self.tabview.tab(
            "Main"), text="Open CTkInputDialog", command=self.open_input_dialog_event)
        self.string_input_button.grid(row=6, column=0, padx=20, pady=(10, 10))

        self.label_tab_2 = CTkLabel(self.tabview.tab("L&C"), text="CTkLabel on Tab 2")
        self.label_tab_2.grid(row=0, column=0, padx=20, pady=20)

        # create radiobutton frame
        self.radiobutton_frame = CTkFrame(self)
        self.radiobutton_frame.grid(row=0, column=3, padx=20, pady=(40, 10),sticky="nsew")

        # CHARACTER RADIOS
        self.radio_var = tkinter.StringVar(value='')
        # self.label_radio_group = CTkLabel(master=self.radiobutton_frame, text="Character Preset")
        # self.label_radio_group.grid(row=0, column=2, columnspan=1, padx=10, pady=10, sticky="")
        self.scrollable_frame_radios = CTkScrollableFrame(self.radiobutton_frame, label_text="Characters")
        self.scrollable_frame_radios.grid(row=1, column=1,sticky="nsew")
        # self.scrollable_frame_radios.grid_columnconfigure(0, weight=1)
        self.scrollable_frame_radios_switches = []
        switches = ['switch','switch2']
        for ndx,i in enumerate(switches):
            self.radio_button = CTkRadioButton(master=self.scrollable_frame_radios, text=i,variable=self.radio_var, value=i,command=lambda:self.radio_test(self.radio_var.get()))
            self.radio_button.grid(row=ndx, column=0, pady=10, padx=20, sticky="nsew")
            self.scrollable_frame_radios_switches.append(self.radio_button)
        # CHARACTER RADIOS

        # OBJECT RADIOS
        self.radio_var_2 = tkinter.IntVar(value=0)
        self.radios_objects = CTkScrollableFrame(self.radiobutton_frame, label_text="Objects")
        self.radios_objects.grid(row=1, column=2,sticky="nsew")
        # self.radios_objects.grid_columnconfigure(0, weight=1)
        self.radios_objects_switches = []
        switches = ['Modern House','Tree','Flower','Tablet','Burger','Bed']
        for ndx,i in enumerate(switches):
            self.radio_button = CTkRadioButton(master=self.radios_objects, text=i,variable=self.radio_var_2, value=ndx)
            self.radio_button.grid(row=ndx, column=0, pady=10, padx=20, sticky="nsew")
            self.radios_objects_switches.append(self.radio_button)
        # OBJECT RADIOS
        

        # CAR RADIOS
        self.radio_var_3 = tkinter.IntVar(value=0)
        self.radios_more_characters = CTkScrollableFrame(self.radiobutton_frame, label_text="Cars")
        self.radios_more_characters.grid(row=2, column=1,sticky="nsew")
        # self.radios_more_characters.grid_columnconfigure(0, weight=1)
        self.radios_more_characters_switches = []
        switches = ['Mercedes Benz','Honda','Hyundai','Toyota Sedan','Chevrolet Truck']
        for ndx,i in enumerate(switches):
            self.radio_button = CTkRadioButton(master=self.radios_more_characters, text=i,variable=self.radio_var_3, value=ndx)
            self.radio_button.grid(row=ndx, column=0, pady=10, padx=20, sticky="nsew")
            self.radios_more_characters_switches.append(self.radio_button)
        # CAR RADIOS

        # ANIMAL RADIOS
        self.radio_var_4 = tkinter.IntVar(value=0)
        self.radios_animals = CTkScrollableFrame(self.radiobutton_frame, label_text="Animals")
        self.radios_animals.grid(row=2, column=2,sticky="nsew")
        # self.radios_animals.grid_columnconfigure(0, weight=1)
        self.radios_animals_switches = []
        switches = ['Feline','Canine','Amphibians','Insects','Birds','Fish']
        for ndx,i in enumerate(switches):
            self.radio_button = CTkRadioButton(master=self.radios_animals, text=i,variable=self.radio_var_4, value=ndx)
            self.radio_button.grid(row=ndx, column=0, pady=10, padx=20, sticky="nsew")
            self.radios_animals_switches.append(self.radio_button)
        # ANIMAL RADIOS

        self.slider_progressbar_frame = CTkFrame(
            self, fg_color="transparent")
        self.slider_progressbar_frame.grid(row=1, 
                                           column=1, 
                                           padx=(20, 0), 
                                           pady=(20, 0), 
                                           sticky="nsew")
        self.slider_progressbar_frame.grid_columnconfigure(0, weight=1)
        self.slider_progressbar_frame.grid_rowconfigure(4, weight=1)

        self.seg_button_1 = CTkSegmentedButton(self.slider_progressbar_frame)
        self.seg_button_1.grid(row=0, column=0, padx=(
            20, 10), pady=(10, 10), sticky="ew")

        self.progressbar_1 = CTkProgressBar(self.slider_progressbar_frame)
        self.progressbar_1.grid(row=1, column=0, padx=(20, 10), pady=(10, 10), sticky="ew")
        self.progressbar_2 = CTkProgressBar(self.slider_progressbar_frame)
        self.progressbar_2.grid(row=2, column=0, padx=(20, 10), pady=(10, 10), sticky="ew")

        self.slider_1 = CTkSlider(self.slider_progressbar_frame, from_=0, to=1, number_of_steps=4)
        self.slider_1.grid(row=3, column=0, padx=(20, 10), pady=(10, 10), sticky="ew")
        self.slider_2 = CTkSlider(self.slider_progressbar_frame, orientation="vertical")
        self.slider_2.grid(row=0, column=1, rowspan=5, padx=(10, 10), pady=(10, 10), sticky="ns")

        self.progressbar_3 = CTkProgressBar(
            self.slider_progressbar_frame, orientation="vertical")
        self.progressbar_3.grid(row=0, 
                                column=2, 
                                rowspan=5, 
                                padx=(10, 20), 
                                pady=(10, 10), 
                                sticky="ns")
        # create scrollable frame
        self.scrollable_frame = CTkScrollableFrame(
            self, label_text="Settings")
        self.scrollable_frame.grid(row=1, column=2, padx=(
            20, 0), pady=(20, 0), sticky="nsew")
        self.scrollable_frame.grid_columnconfigure(0, weight=1)
        self.scrollable_frame_switches = []
        switches = ['Locations','Architecture','Artists','Animals','Automobiles','Buildings','Nature']
        for ndx,i in enumerate(switches):
            switch = CTkSwitch(
                master=self.scrollable_frame, text=f"{i}")
            switch.grid(row=ndx, column=0, padx=10, pady=(0, 20),sticky="nsew")
            self.scrollable_frame_switches.append(switch)

        # create checkbox and switch frame
        self.checkbox_slider_frame = CTkFrame(self)
        self.checkbox_slider_frame.grid(row=1, column=3, padx=(20, 20), pady=(20, 0), sticky="nsew")

        self.checkbox_1 = CTkCheckBox(
            master=self.checkbox_slider_frame, text="Kid Mode")
        self.checkbox_1.grid(row=1, column=0, pady=(
            20, 0), padx=20, sticky="nsew")
        self.checkbox_2 = CTkCheckBox(
            master=self.checkbox_slider_frame, text="Expert Mode")
        self.checkbox_2.grid(row=2, column=0, pady=(
            20, 0), padx=20, sticky="nsew")
        self.checkbox_3 = CTkCheckBox(
            master=self.checkbox_slider_frame, text="Debug")
        self.checkbox_3.grid(row=3, 
                             column=0, 
                             pady=20, 
                             padx=20, 
                             sticky="nsew")
        #IMAGE FRAME
        self.frame_images = CTkFrame(self)
        self.frame_images.grid(row=2, 
                               column=2, 
                               columnspan=2, 
                               padx=(20, 20), 
                               pady=(20, 0), 
                               sticky="nsew")
        # self.my_image = CTkImage(light_image=Image.open("./gallery/IMG_4159.png"),
        #                           dark_image=Image.open("./gallery/IMG_4159.png"),
        #                           size=(300, 300))
        # self.my_image.place(x=0,y=0)
        # button = CTkButton(master=self.frame_images,
        #                                  image = self.my_image,
        #                                  fg_color='black', 
        #                                  hover_color='black',
        #                                  text="",
        #                                  width=500,height=400,
        #                                  compound='left')
        # button.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
        #IMAGE FRAME

        # set default values
        self.button_side_bar_disabled.configure(
            state="disabled", text="Disabled")
        self.checkbox_3.configure(state="disabled")
        self.checkbox_1.select()
        self.scrollable_frame_switches[0].select()
        self.scrollable_frame_switches[-1].select()
        # self.radio_button_3.configure(state="disabled")
        self.appearance_mode_optionemenu.set("Dark")
        # self.appearance_color_theme_optionemenu.set("green")
        self.scaling_optionemenu.set("100%")
        self.menu_persona.set("Woman")
        self.menu_media.set("Photo")
        self.menu_location.set("random")
        self.slider_1.configure(command=self.progressbar_2.set)
        self.slider_2.configure(command=self.progressbar_3.set)
        self.progressbar_1.configure(mode="indeterminnate")
        self.progressbar_1.start()
        self.textbox.insert(
            "0.0", """Welcome to Prompt Genius. Generate a prompt and be amazed!""")
        # self.textbox_2.insert("0.0",'asdfasdfasdf')
        self.seg_button_1.configure(
            values=["Recents", "Current", "All Prompts"])
        self.seg_button_1.set("Value 2")

        treestyle = ttk.Style()
        treestyle.theme_use('default')
        # treestyle.configure("Treeview", background=bg_color, foreground=text_color, fieldbackground=bg_color, borderwidth=0)
        # treestyle.map('Treeview', background=[('selected', bg_color)], foreground=[('selected', selected_color)])
        self.bind("<<TreeviewSelect>>", lambda event: self.focus_set())

        ##Treeview widget data
        treeview = ttk.Treeview(self, height=6, show="tree")
        treeview.grid(padx=10)
        treeview.insert('', '0', 'i1', text ='Categories')
        treeview.insert('', '1', 'i2', text ='Logins')
        treeview.insert('', '2', 'i3', text ='Identities')
        treeview.insert('i2', 'end', 'Frame', text ='Frame')
        treeview.insert('i2', 'end', 'Label', text ='Label')
        treeview.insert('i3', 'end', 'Treeview', text ='Treeview')
        # treeview.insert('', '3', 'i4', text ='Tags')
        treeview.move('i2', 'i1', 'end')
        treeview.move('i3', 'i1', 'end')

    def open_input_dialog_event(self):
        dialog = CTkInputDialog(
            text="Type in a number:", title="CTkInputDialog")
        print("CTkInputDialog:", dialog.get_input())
    
    def get_checked_items(self):
        return [checkbox.cget("text") for checkbox in self.scrollable_frame_radios_switches if checkbox.cget('value') == 1]

    def change_appearance_mode_event(self, new_appearance_mode: str):
        customtkinter.set_appearance_mode(new_appearance_mode)

    def change_theme_mode_event(self, new_theme_mode: str):
        customtkinter.set_default_color_theme(new_theme_mode)

    def change_scaling_event(self, new_scaling: str):
        new_scaling_float = int(new_scaling.replace("%", "")) / 100
        customtkinter.set_widget_scaling(new_scaling_float)

    def sidebar_button_event(self):
        print("Created new chat..")

    def generate_prompt(self, info='Welcme'):
        print("Generated prompt")
        self.textbox.delete(1.0, "end")
        self.textbox.insert("end", 'Generated')

    def clear_prompts(self, info='Welcme'):
        print("Celared prompt")
        self.textbox.delete(1.0, "end")


if __name__ == "__main__":
    app = App()
    app.mainloop()