So i was coding an app using custom tkinter i followed a youtube tutorial for option_frame and main_frame so its very confusing i mean when i use the basic_page select the files and after i gone to icon_page and selected the icon and when come back to basic_page its entries are empty and when i gone to icon_page back it is also empty how it works can u guys help me
def basic_page(): global input_file_entry, output_file_entry # Create StringVar instances for input and output file paths input_file_var = StringVar() output_file_var = StringVar() def choose_input_file(): input_file = filedialog.askopenfilename(title="Select Input File") input_file_var.set(input_file) # Set the selected file in the StringVar def choose_output_file(): output_file = filedialog.asksaveasfilename(title="Name anything...",) output_file_var.set(output_file) # Set the selected file in the StringVar basic_page_frame = CTkFrame(main_frame) input_file_entry = CTkEntry(basic_page_frame, textvariable=input_file_var, placeholder_text="write Path to the file u want to encrypt manually", width=450) input_file_entry.pack(pady=50) input_file_button = CTkButton(basic_page_frame, text="Choose Input file", command=choose_input_file, width=150, corner_radius=40) input_file_button.pack() output_file_entry = CTkEntry(basic_page_frame, textvariable=output_file_var, placeholder_text="write Path to the output file manually donot add .exe", width=450) output_file_entry.pack(pady=50) output_file_button = CTkButton(basic_page_frame, text="Save as", command=choose_output_file, width=150, corner_radius=40) output_file_button.pack() basic_page_frame.pack(fill=BOTH, expand=True)def icon_page(): global input_file_entry # Making input_file_entry a global variable for later use # Create StringVar instance for the icon file path icon_file_var = StringVar() def choose_icon_file(): icon_path = filedialog.askopenfilename(title="Select Icon", filetypes=[("Icon files", "*.ico")]) if icon_path: icon_file_var.set(icon_path) # Set the selected file in the StringVar input_file_entry.delete(0, END) # Clear the current entry input_file_entry.insert(0, icon_path) # Set the selected file in the entry display_icon(icon_path) def display_icon(icon_path): icon_image = Image.open(icon_path) icon_image = ImageTk.PhotoImage(icon_image) display_label.configure(image=icon_image) display_label.image = icon_image icon_page_frame = CTkFrame(main_frame) input_file_entry = CTkEntry(icon_page_frame, textvariable=icon_file_var, placeholder_text="Path to the icon file", width=450) input_file_entry.pack(pady=50) input_file_button = CTkButton(icon_page_frame, text="Choose Icon .ico", command=choose_icon_file, width=150, corner_radius=40) input_file_button.pack() display_label = CTkLabel(icon_page_frame, text='') display_label.pack(pady=50) icon_page_frame.pack(fill=BOTH, expand=True)
this are pages and
def hide_bg(): basic_indicate.configure(bg_color='transparent') assembly_indicate.configure(bg_color='transparent') icon_indicate.configure(bg_color='transparent') build_indicate.configure(bg_color='transparent') advanced_indicate.configure(bg_color='transparent')def switch(widget,page): hide_bg() widget.configure(bg_color='blue') for fm in main_frame.winfo_children(): fm.destroy() page()
this is the switching methodologyand below is the main app code
set_appearance_mode("System") # Modes: system (default), light, darkapp = CTk()app.geometry("625x625")app.iconbitmap('icon.ico')app.title("FG_Crypter")options_frame = CTkFrame(app)basic_btn = CTkButton(options_frame,text="Basic",font=("Arial",13), width=125,command=lambda: switch(basic_indicate,basic_page))basic_btn.place(x=0,y=0)basic_indicate = CTkLabel(options_frame,text="",bg_color='blue',width=100,height=2)basic_indicate.place(x=12,y=30)icon_btn = CTkButton(options_frame,text="Icon",font=("Arial",13), width=125,command=lambda: switch(icon_indicate,icon_page))icon_btn.place(x=125,y=0)icon_indicate = CTkLabel(options_frame,text="", width=100,height=2)icon_indicate.place(x=137,y=30)Assembly_btn = CTkButton(options_frame,text="Assembly",font=("Arial",13), width=125,command=lambda: switch(assembly_indicate))Assembly_btn.place(x=250,y=0)assembly_indicate = CTkLabel(options_frame,text="",width=100,height=2)assembly_indicate.place(x=262,y=30)Advanced_btn = CTkButton(options_frame,text="Advanced",font=("Arial",13), width=125,command=lambda: switch(advanced_indicate))Advanced_btn.place(x=375,y=0)advanced_indicate = CTkLabel(options_frame,text="",width=100,height=2)advanced_indicate.place(x=387,y=30)Build_btn = CTkButton(options_frame,text="Build",font=("Arial",13), width=125,command=lambda: switch(build_indicate))Build_btn.place(x=500,y=0)build_indicate = CTkLabel(options_frame,text="",width=100,height=2)build_indicate.place(x=512,y=30)options_frame.pack(pady=5)options_frame.propagate(False)options_frame.configure(width=650,height=35)main_frame = CTkFrame(app)main_frame.pack(fill=BOTH,expand=True)basic_page()app.mainloop()