import tkinter as tk from tkinter import ttk from tkinter import messagebox import threading import time import datetime def update_time(status_bar): """Función que actualiza la hora y el día de la semana en un label""" while True: # Obtener la fecha y hora actual now = datetime.datetime.now() day_of_week = now.strftime("%A") # Día de la semana time_str = now.strftime("%H:%M:%S") # Hora en formato HH:MM:SS date_str = now.strftime("%Y-%m-%d") # Fecha en formato YYYY-MM-DD label_text = f"{day_of_week}, {date_str} - {time_str}" # Actualizar el label (debemos usar `after` para asegurarnos que se actualice en el hilo principal de Tkinter) status_bar.after(1000, status_bar.config, {"text": label_text}) # Espera 1 segundo antes de actualizar de nuevo time.sleep(1) def main(): # Crear ventana principal root = tk.Tk() root.title("Aplicación con Menú y Layout") root.geometry("1600x600") # Dimensiones de la ventana # Configuración del Menú Superior menubar = tk.Menu(root, font=("Helvetica", 16)) # Menú "Archivo" file_menu = tk.Menu(menubar, tearoff=0) file_menu.add_command(label="Nuevo", command=lambda: messagebox.showinfo("Nuevo", "Nueva opción seleccionada")) file_menu.add_command(label="Abrir", command=lambda: messagebox.showinfo("Abrir", "Abrir opción seleccionada")) file_menu.add_separator() file_menu.add_command(label="Salir", command=root.quit) menubar.add_cascade(label="Archivo", menu=file_menu) # Menú "Editar" edit_menu = tk.Menu(menubar, tearoff=0) edit_menu.add_command(label="Copiar", command=lambda: messagebox.showinfo("Copiar", "Copiar opción seleccionada")) edit_menu.add_command(label="Pegar", command=lambda: messagebox.showinfo("Pegar", "Pegar opción seleccionada")) menubar.add_cascade(label="Editar", menu=edit_menu) # Menú "Ayuda" help_menu = tk.Menu(menubar, tearoff=0) help_menu.add_command(label="Acerca de", command=lambda: messagebox.showinfo("Acerca de", "Versión 1.0")) menubar.add_cascade(label="Ayuda", menu=help_menu) # Configurar la barra de menú root.config(menu=menubar) # Barra de estado status_bar = tk.Label(root, text="Hilo fecha-hora", font=("Helvetica", 16), bd=1, fg="blue", relief="sunken", anchor="w") status_bar.pack(side="bottom", fill="x",pady=2) # Frame lateral sidebar_frame = tk.Frame(root, width=600, bg="lightgray") sidebar_frame.pack(side="left", fill="y") # Frame principal main_frame = tk.Frame(root, bg="white") main_frame.pack(side="right", expand=True, fill="both") # Etiquetas de ejemplo en los Frames sidebar_label = tk.Label(sidebar_frame, text="Panel Lateral", bg="lightgray") sidebar_label.pack(padx=10, pady=10) main_label = tk.Label(main_frame, text="Panel Principal", bg="white") main_label.pack(padx=10, pady=10) update_thread = threading.Thread(target=update_time, args=(status_bar,)) update_thread.daemon = True # Hacemos el hilo un demonio para que termine con la app update_thread.start() # Ejecutar el bucle principal root.mainloop() if __name__ == "__main__": main()