Advertisement
InAbstenia

Python_GUI

Mar 23rd, 2024
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.39 KB | None | 0 0
  1. import tkinter
  2. import customtkinter
  3. from PIL import Image
  4. import os
  5.  
  6. DIRPATH = os.path.dirname(os.path.abspath(__file__))
  7. themepath = os.path.join(DIRPATH, "CTkTheme_test.json")
  8.  
  9.  
  10. class App(customtkinter.CTk):
  11. def __init__(self):
  12. super().__init__()
  13.  
  14. # configure window
  15. self.title("Parse Master")
  16. self.geometry(f"{1000}x{580}")
  17. self.bind("<1>", lambda event: event.widget.focus_set())
  18.  
  19. # configure grid layout (4x4)
  20. self.grid_columnconfigure(1, weight=1)
  21. self.grid_columnconfigure((2, 3), weight=0)
  22. self.grid_rowconfigure((0, 1, 2), weight=1)
  23.  
  24. # create sidebar frame with widgets
  25. self.sidebar_frame = customtkinter.CTkFrame(self, width=140, corner_radius=0)
  26. self.sidebar_frame.grid(row=0, column=0, rowspan=4, sticky="nsew")
  27. self.sidebar_frame.grid_rowconfigure(4, weight=1)
  28.  
  29. # Sidebar Label
  30. self.logo_label = customtkinter.CTkLabel(self.sidebar_frame, text="CustomTkinter", font=customtkinter.CTkFont(size=20, weight="bold"))
  31. self.logo_label.grid(row=0, column=0, padx=20, pady=(20, 10))
  32.  
  33. # Sidebar Buttons
  34. self.sidebar_button_1 = customtkinter.CTkButton(self.sidebar_frame, command=lambda: print("Log: Parse"))
  35. self.sidebar_button_1.grid(row=1, column=0, padx=20, pady=10)
  36. self.sidebar_button_2 = customtkinter.CTkButton(self.sidebar_frame, command=lambda: print("Log: Split"))
  37. self.sidebar_button_2.grid(row=3, column=0, padx=20, pady=10)
  38.  
  39. # Sidebar Image
  40. self.image = customtkinter.CTkImage(Image.open(os.path.join(os.path.dirname(customtkinter.__file__), "assets","icons","CustomTkinter_icon_Windows.ico")), size=(100,100))
  41. self.Image_label = customtkinter.CTkLabel(self.sidebar_frame, text="", image=self.image)
  42. self.Image_label.grid(row=4, column=0, padx=20, pady=10)
  43.  
  44. # Sidebar Image
  45. self.appearance_mode_label = customtkinter.CTkLabel(self.sidebar_frame, text="Deliminator", anchor="w")
  46. self.appearance_mode_label.grid(row=5, column=0, padx=20, pady=(10, 0))
  47. self.appearance_mode_optionemenu = customtkinter.CTkOptionMenu(self.sidebar_frame)
  48. self.appearance_mode_optionemenu.grid(row=6, column=0, padx=20, pady=(10, 10))
  49. self.scaling_label = customtkinter.CTkLabel(self.sidebar_frame, text="UI Scaling:", anchor="w")
  50. self.scaling_label.grid(row=7, column=0, padx=20, pady=(10, 0))
  51. self.scaling_optionemenu = customtkinter.CTkOptionMenu(self.sidebar_frame, values=["80%", "90%", "100%", "110%", "120%"], command=self.change_scaling_event)
  52. self.scaling_optionemenu.grid(row=8, column=0, padx=20, pady=(10, 20))
  53.  
  54. # create main entry and button
  55. self.entry = customtkinter.CTkEntry(self, placeholder_text="CTkEntry")
  56. self.entry.grid(row=3, column=1, columnspan=2, padx=(20, 0), pady=(20, 20), sticky="nsew")
  57.  
  58. self.main_button_1 = customtkinter.CTkButton(master=self, fg_color="transparent", border_width=2)
  59. self.main_button_1.grid(row=3, column=3, padx=(20, 20), pady=(20, 20), sticky="nsew")
  60.  
  61. # create textbox
  62. self.textbox = customtkinter.CTkTextbox(self, width=250)
  63. self.textbox.grid(row=0, column=1, padx=(20, 0), pady=(20, 0), sticky="nsew")
  64.  
  65. # create textbox
  66. self.textbox2 = customtkinter.CTkTextbox(self, width=250)
  67. self.textbox2.grid(row=1, column=1, padx=(20, 0), pady=(20, 0), sticky="nsew")
  68.  
  69. # create radiobutton frame
  70. self.radiobutton_frame = customtkinter.CTkFrame(self)
  71. self.radiobutton_frame.grid(row=0, column=3, padx=(20, 20), pady=(20, 0), sticky="nsew")
  72.  
  73. # create checkbox and switch frame
  74. self.checkbox_slider_frame = customtkinter.CTkFrame(self)
  75. self.checkbox_slider_frame.grid(row=1, column=3, padx=(20, 20), pady=(20, 0), sticky="nsew")
  76. self.checkbox_1 = customtkinter.CTkCheckBox(master=self.checkbox_slider_frame)
  77. self.checkbox_2 = customtkinter.CTkCheckBox(master=self.checkbox_slider_frame)
  78. self.switch_1 = customtkinter.CTkSwitch(master=self.checkbox_slider_frame)
  79. self.switch_2 = customtkinter.CTkSwitch(master=self.checkbox_slider_frame)
  80.  
  81. # create slider and progressbar frame
  82. self.slider_progressbar_frame = customtkinter.CTkFrame(self)
  83. self.seg_button_1 = customtkinter.CTkSegmentedButton(self.slider_progressbar_frame)
  84.  
  85. label = customtkinter.CTkLabel(self.sidebar_frame, text="", font=("", 13))
  86. label.bind("<Enter>", lambda event: label.configure(font=("", 13, "underline"), cursor="hand2"))
  87. label.bind("<Leave>", lambda event: label.configure(font=("", 13), cursor="arrow"))
  88.  
  89. # set default values
  90. self.appearance_mode_optionemenu.set("Dark")
  91. self.scaling_optionemenu.set("100%")
  92. self.textbox.insert("0.0", "Write Something...")
  93. self.textbox2.insert("0.0", "Results Loading...")
  94.  
  95. def change_appearance_mode_event(self, new_appearance_mode: str):
  96. customtkinter.set_appearance_mode(new_appearance_mode)
  97.  
  98. def change_scaling_event(self, new_scaling: str):
  99. new_scaling_float = int(new_scaling.replace("%", "")) / 100
  100. customtkinter.set_widget_scaling(new_scaling_float)
  101.  
  102. if __name__ == "__main__":
  103. app = App()
  104. app.mainloop()
  105.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement