Customtkinter Frames
Verfasst: Samstag 4. März 2023, 12:19
Hey,
ich habe von Github die Examle Vorlage von Customtkinter genommen. Ich hab sie getestet, alles klappt. Jetzt habe ich angefangen diese zu überarbeiten, und bin hier stehengeblieben:
Das Problem was ich jetzt aber habe ist, dass die sogenannten Frames 2-9 untereinander ordentlich angeordnet sein sollen. Jedoch ist diese weshalb auch immer nicht der Fall.
Bitte helf mir.
Lg
ich habe von Github die Examle Vorlage von Customtkinter genommen. Ich hab sie getestet, alles klappt. Jetzt habe ich angefangen diese zu überarbeiten, und bin hier stehengeblieben:
Code: Alles auswählen
import customtkinter
import os
from PIL import Image
class App(customtkinter.CTk):
def __init__(self):
super().__init__()
self.title("Managator")
self.geometry("1100x750")
# set grid layout 1x2
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(1, weight=1)
# load images with light and dark mode image
image_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "test_images")
self.logo_image = customtkinter.CTkImage(Image.open(os.path.join(image_path, "CustomTkinter_logo_single.png")), size=(136, 96))
self.large_test_image = customtkinter.CTkImage(Image.open(os.path.join(image_path, "large_test_image.png")), size=(500, 150))
self.image_icon_image = customtkinter.CTkImage(Image.open(os.path.join(image_path, "image_icon_light.png")), size=(20, 20))
self.home_image = customtkinter.CTkImage(light_image=Image.open(os.path.join(image_path, "home_dark.png")),
dark_image=Image.open(os.path.join(image_path, "home_light.png")), size=(20, 20))
self.chat_image = customtkinter.CTkImage(light_image=Image.open(os.path.join(image_path, "chat_dark.png")),
dark_image=Image.open(os.path.join(image_path, "chat_light.png")), size=(20, 20))
self.add_user_image = customtkinter.CTkImage(light_image=Image.open(os.path.join(image_path, "add_user_dark.png")),
dark_image=Image.open(os.path.join(image_path, "add_user_light.png")), size=(20, 20))
# create navigation frame
self.navigation_frame = customtkinter.CTkFrame(self, corner_radius=0)
self.navigation_frame.grid(row=0, column=0, sticky="nsew")
self.navigation_frame.grid_rowconfigure(4, weight=1)
self.navigation_frame_label = customtkinter.CTkLabel(self.navigation_frame, text="", image=self.logo_image,
compound="left", font=customtkinter.CTkFont(size=1, weight="bold"))
self.navigation_frame_label.grid(row=0, column=0, padx=20, pady=20)
self.home_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Home",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.home_image, anchor="w", command=self.home_button_event)
self.home_button.grid(row=1, column=0, sticky="ew")
self.frame_2_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 1",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.chat_image, anchor="w", command=self.frame_2_button_event)
self.frame_2_button.grid(row=2, column=0, sticky="ew")
self.frame_3_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 2",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.add_user_image, anchor="w", command=self.frame_3_button_event)
self.frame_3_button.grid(row=3, column=0, sticky="ew")
self.frame_4_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 3",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.chat_image, anchor="w", command=self.frame_4_button_event)
self.frame_4_button.grid(row=4, column=0, sticky="ew")
self.frame_5_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 4",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.add_user_image, anchor="w", command=self.frame_5_button_event)
self.frame_5_button.grid(row=5, column=0, sticky="ew")
self.frame_6_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 5",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.chat_image, anchor="w", command=self.frame_6_button_event)
self.frame_6_button.grid(row=6, column=0, sticky="ew")
self.frame_7_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 6",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.add_user_image, anchor="w", command=self.frame_7_button_event)
self.frame_7_button.grid(row=7, column=0, sticky="ew")
self.frame_8_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 7",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.chat_image, anchor="w", command=self.frame_8_button_event)
self.frame_8_button.grid(row=8, column=0, sticky="ew")
self.frame_9_button = customtkinter.CTkButton(self.navigation_frame, corner_radius=0, height=40, border_spacing=10, text="Frame 8",
fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"),
image=self.chat_image, anchor="w", command=self.frame_9_button_event)
self.frame_9_button.grid(row=9, column=0, sticky="ew")
self.appearance_mode_menu = customtkinter.CTkOptionMenu(self.navigation_frame, values=["Light", "Dark", "System"],
command=self.change_appearance_mode_event)
self.appearance_mode_menu.grid(row=9, column=0, padx=20, pady=20, sticky="s")
# create home frame
self.home_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.home_frame.grid_columnconfigure(0, weight=1)
self.home_frame_large_image_label = customtkinter.CTkLabel(self.home_frame, text="", image=self.large_test_image)
self.home_frame_large_image_label.grid(row=0, column=0, padx=20, pady=10)
self.second_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.third_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.fourth_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.fifth_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.sixth_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.seventh_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.eighth_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
self.ninth_frame = customtkinter.CTkFrame(self, corner_radius=0, fg_color="transparent")
# select default frame
self.select_frame_by_name("home")
def select_frame_by_name(self, name):
# set button color for selected button
self.home_button.configure(fg_color=("gray75", "gray25") if name == "home" else "transparent")
self.frame_2_button.configure(fg_color=("gray75", "gray25") if name == "frame_2" else "transparent")
self.frame_3_button.configure(fg_color=("gray75", "gray25") if name == "frame_3" else "transparent")
self.frame_4_button.configure(fg_color=("gray75", "gray25") if name == "frame_4" else "transparent")
self.frame_5_button.configure(fg_color=("gray75", "gray25") if name == "frame_5" else "transparent")
self.frame_6_button.configure(fg_color=("gray75", "gray25") if name == "frame_6" else "transparent")
self.frame_7_button.configure(fg_color=("gray75", "gray25") if name == "frame_7" else "transparent")
self.frame_8_button.configure(fg_color=("gray75", "gray25") if name == "frame_8" else "transparent")
self.frame_9_button.configure(fg_color=("gray75", "gray25") if name == "frame_9" else "transparent")
# show selected frame
if name == "home":
self.home_frame.grid(row=0, column=1, sticky="nsew")
else:
self.home_frame.grid_forget()
if name == "frame_2":
self.second_frame.grid(row=0, column=1, sticky="nsew")
else:
self.second_frame.grid_forget()
if name == "frame_3":
self.third_frame.grid(row=0, column=1, sticky="nsew")
else:
self.third_frame.grid_forget()
if name == "frame_4":
self.fourth_frame.grid(row=0, column=1, sticky="nsew")
else:
self.fourth_frame.grid_forget()
if name == "frame_5":
self.fifth_frame.grid(row=0, column=1, sticky="nsew")
else:
self.fifth_frame.grid_forget()
if name == "frame_6":
self.sixth_frame.grid(row=0, column=1, sticky="nsew")
else:
self.sixth_frame.grid_forget()
if name == "frame_7":
self.seventh_frame.grid(row=0, column=1, sticky="nsew")
else:
self.seventh_frame.grid_forget()
if name == "frame_8":
self.eighth_frame.grid(row=0, column=1, sticky="nsew")
else:
self.eighth_frame.grid_forget()
if name == "frame_9":
self.ninth_frame.grid(row=0, column=1, sticky="nsew")
else:
self.ninth_frame.grid_forget()
def home_button_event(self):
self.select_frame_by_name("home")
def frame_2_button_event(self):
self.select_frame_by_name("frame_2")
def frame_3_button_event(self):
self.select_frame_by_name("frame_3")
def frame_4_button_event(self):
self.select_frame_by_name("frame_4")
def frame_5_button_event(self):
self.select_frame_by_name("frame_5")
def frame_6_button_event(self):
self.select_frame_by_name("frame_6")
def frame_7_button_event(self):
self.select_frame_by_name("frame_7")
def frame_8_button_event(self):
self.select_frame_by_name("frame_8")
def frame_9_button_event(self):
self.select_frame_by_name("frame_9")
def change_appearance_mode_event(self, new_appearance_mode):
customtkinter.set_appearance_mode(new_appearance_mode)
if __name__ == "__main__":
app = App()
app.mainloop()
Bitte helf mir.
Lg