Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter
- import customtkinter
- from PIL import Image
- import os
- DIRPATH = os.path.dirname(os.path.abspath(__file__))
- themepath = os.path.join(DIRPATH, "CTkTheme_test.json")
- class App(customtkinter.CTk):
- def __init__(self):
- super().__init__()
- # configure window
- self.title("Parse Master")
- self.geometry(f"{1000}x{580}")
- self.bind("<1>", lambda event: event.widget.focus_set())
- # 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)
- # create sidebar frame with widgets
- self.sidebar_frame = customtkinter.CTkFrame(self, width=140, corner_radius=0)
- self.sidebar_frame.grid(row=0, column=0, rowspan=4, sticky="nsew")
- self.sidebar_frame.grid_rowconfigure(4, weight=1)
- # Sidebar Label
- self.logo_label = customtkinter.CTkLabel(self.sidebar_frame, text="CustomTkinter", font=customtkinter.CTkFont(size=20, weight="bold"))
- self.logo_label.grid(row=0, column=0, padx=20, pady=(20, 10))
- # Sidebar Buttons
- self.sidebar_button_1 = customtkinter.CTkButton(self.sidebar_frame, command=lambda: print("Log: Parse"))
- self.sidebar_button_1.grid(row=1, column=0, padx=20, pady=10)
- self.sidebar_button_2 = customtkinter.CTkButton(self.sidebar_frame, command=lambda: print("Log: Split"))
- self.sidebar_button_2.grid(row=3, column=0, padx=20, pady=10)
- # Sidebar Image
- self.image = customtkinter.CTkImage(Image.open(os.path.join(os.path.dirname(customtkinter.__file__), "assets","icons","CustomTkinter_icon_Windows.ico")), size=(100,100))
- self.Image_label = customtkinter.CTkLabel(self.sidebar_frame, text="", image=self.image)
- self.Image_label.grid(row=4, column=0, padx=20, pady=10)
- # Sidebar Image
- self.appearance_mode_label = customtkinter.CTkLabel(self.sidebar_frame, text="Deliminator", anchor="w")
- self.appearance_mode_label.grid(row=5, column=0, padx=20, pady=(10, 0))
- self.appearance_mode_optionemenu = customtkinter.CTkOptionMenu(self.sidebar_frame)
- self.appearance_mode_optionemenu.grid(row=6, column=0, padx=20, pady=(10, 10))
- self.scaling_label = customtkinter.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 = customtkinter.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 = customtkinter.CTkEntry(self, placeholder_text="CTkEntry")
- self.entry.grid(row=3, column=1, columnspan=2, padx=(20, 0), pady=(20, 20), sticky="nsew")
- self.main_button_1 = customtkinter.CTkButton(master=self, fg_color="transparent", border_width=2)
- self.main_button_1.grid(row=3, column=3, padx=(20, 20), pady=(20, 20), sticky="nsew")
- # create textbox
- self.textbox = customtkinter.CTkTextbox(self, width=250)
- self.textbox.grid(row=0, column=1, padx=(20, 0), pady=(20, 0), sticky="nsew")
- # create textbox
- self.textbox2 = customtkinter.CTkTextbox(self, width=250)
- self.textbox2.grid(row=1, column=1, padx=(20, 0), pady=(20, 0), sticky="nsew")
- # create radiobutton frame
- self.radiobutton_frame = customtkinter.CTkFrame(self)
- self.radiobutton_frame.grid(row=0, column=3, padx=(20, 20), pady=(20, 0), sticky="nsew")
- # create checkbox and switch frame
- self.checkbox_slider_frame = customtkinter.CTkFrame(self)
- self.checkbox_slider_frame.grid(row=1, column=3, padx=(20, 20), pady=(20, 0), sticky="nsew")
- self.checkbox_1 = customtkinter.CTkCheckBox(master=self.checkbox_slider_frame)
- self.checkbox_2 = customtkinter.CTkCheckBox(master=self.checkbox_slider_frame)
- self.switch_1 = customtkinter.CTkSwitch(master=self.checkbox_slider_frame)
- self.switch_2 = customtkinter.CTkSwitch(master=self.checkbox_slider_frame)
- # create slider and progressbar frame
- self.slider_progressbar_frame = customtkinter.CTkFrame(self)
- self.seg_button_1 = customtkinter.CTkSegmentedButton(self.slider_progressbar_frame)
- label = customtkinter.CTkLabel(self.sidebar_frame, text="", font=("", 13))
- label.bind("<Enter>", lambda event: label.configure(font=("", 13, "underline"), cursor="hand2"))
- label.bind("<Leave>", lambda event: label.configure(font=("", 13), cursor="arrow"))
- # set default values
- self.appearance_mode_optionemenu.set("Dark")
- self.scaling_optionemenu.set("100%")
- self.textbox.insert("0.0", "Write Something...")
- self.textbox2.insert("0.0", "Results Loading...")
- def change_appearance_mode_event(self, new_appearance_mode: str):
- customtkinter.set_appearance_mode(new_appearance_mode)
- def change_scaling_event(self, new_scaling: str):
- new_scaling_float = int(new_scaling.replace("%", "")) / 100
- customtkinter.set_widget_scaling(new_scaling_float)
- if __name__ == "__main__":
- app = App()
- app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement