Skip to content

Main.py

Dev_ edited this page Jan 17, 2025 · 1 revision

Documentación del Código: main.py

Descripción General

El archivo main.py es el núcleo de la aplicación CTkDesigner. Define la estructura principal de la interfaz gráfica de usuario (GUI) utilizando la biblioteca CustomTkinter y maneja la lógica central de la aplicación. Permite la creación de proyectos, configuración de widgets, administración de propiedades y exportación/importación de archivos.


Estructura del Código

Importaciones

El archivo importa múltiples módulos y bibliotecas para gestionar la interfaz gráfica, traducciones y funcionalidad personalizada:

import logging
import tkinter.ttk as ttk
import customtkinter as ctk
from data.variable import *
from objects.tooltip import *
from tkinter import filedialog
from functions.import_widget import *
from objects.codeBox import CTkCodeBox
from translations.translations import *
from translations.translator import Translator
from functions.create_widget_animation import *
from objects.virtualWindow import VirtualWindow

Funciones

validate_input(value)

Valida si una entrada es un número entre 0 y 1000 o está vacía.

  • Argumentos:
    • value (str): Valor que representa la entrada del usuario a validar.
  • Retorna:
    • bool: True si el valor cumple con los criterios; de lo contrario, False.

Clases

LeftSidebar

Define la barra lateral izquierda de la aplicación, que proporciona opciones de configuración para widgets seleccionados.

  • Atributos:

    • PADDING (int): Espaciado constante utilizado en la interfaz.
    • ROW_SCENE (int): Índice de la fila actual en el administrador de escenas.
    • widget_dict (dict): Diccionario que almacena widgets y sus variables asociadas.
  • Métodos principales:

    • create_scrollable_frame(): Crea un marco desplazable.

      • Argumentos: Ninguno.
      • Retorna: Un objeto CTkScrollableFrame o CTkFrame según la configuración.
    • create_label(parent, text): Crea un widget CTkLabel.

      • Argumentos:
        • parent (CTk): Contenedor donde se agregará el label.
        • text (str): Texto a mostrar en el label.
      • Retorna: El objeto CTkLabel creado.
    • create_config_space(): Crea un marco para configuraciones de widgets.

      • Argumentos: Ninguno.
      • Retorna: Un objeto CTkFrame.
    • create_scene_manager_frame(): Crea el marco para gestionar escenas.

      • Argumentos: Ninguno.
      • Retorna: Un objeto CTkScrollableFrame.
    • show_widget_config(widget): Muestra las opciones de configuración para un widget seleccionado.

      • Argumentos:
        • widget (widget): Widget a configurar.
      • Retorna: Ninguno.
    • clear_config_space(): Limpia el espacio de configuración.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • create_property_entries(widget, properties): Genera entradas de propiedades para un widget.

      • Argumentos:
        • widget (widget): Widget objetivo.
        • properties (list): Lista de propiedades a configurar.
      • Retorna: Ninguno.
    • update_property(widget, prop, entry, tooltip): Actualiza una propiedad específica de un widget basado en un valor de entrada.

      • Argumentos:
        • widget (widget): Widget objetivo.
        • prop (str): Propiedad del widget a modificar.
        • entry (CTkEntry): Entrada que contiene el nuevo valor.
        • tooltip (CTkToolTip): Herramienta para mostrar errores.
      • Retorna: Ninguno.
    • create_position_entries(widget): Crea entradas para posiciones (x, y).

      • Argumentos:
        • widget (widget): Widget para el que se generan las entradas.
      • Retorna: Ninguno.
    • create_action_buttons(widget): Genera botones para acciones específicas del widget.

      • Argumentos:
        • widget (widget): Widget objetivo.
      • Retorna: Ninguno.
    • delete_widget(widget): Elimina un widget de la interfaz virtual.

      • Argumentos:
        • widget (widget): Widget a eliminar.
      • Retorna: Ninguno.

RightSidebar

Administra la barra lateral derecha, que muestra la jerarquía de widgets y proporciona herramientas para gestionar la ventana virtual.

  • Atributos:

    • TREEVIEW_WIDTH (int): Anchura del árbol de widgets.
    • PADDING (int): Espaciado constante utilizado en la interfaz.
  • Métodos principales:

    • configure_treeview_style(): Configura el estilo del árbol de widgets.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • create_widgets_section(): Crea la sección de widgets.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • import_custom_widget(): Importa un widget personalizado desde un archivo.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • create_treeview_section(): Genera el esquema de widgets.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • add_widget(widget): Añade un widget a la ventana virtual y actualiza el árbol.

      • Argumentos:
        • widget (widget): Widget a añadir.
      • Retorna: Ninguno.
    • update_treeview(): Actualiza la jerarquía del árbol basándose en los widgets detectados.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.

Toolbar

Administra la barra de herramientas superior, que incluye opciones para exportar proyectos, cambiar configuraciones y alternar vistas.

  • Atributos:

    • PROGRESS_BAR_HIDE_DELAY (int): Tiempo de espera para ocultar la barra de progreso.
  • Métodos principales:

    • apply_configs(language): Aplica configuraciones específicas de idioma.

      • Argumentos:
        • language (str): Idioma a aplicar.
      • Retorna: Ninguno.
    • create_config_widgets(config_window): Crea widgets dentro de la ventana de configuración.

      • Argumentos:
        • config_window (CTkToplevel): Ventana donde se añaden los widgets.
      • Retorna: Ninguno.
    • open_config_window(): Abre la ventana de configuración.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • create_buttons(): Crea y posiciona los botones de la barra de herramientas.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • export_to_file(): Exporta la configuración actual a un archivo Python.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • import_from_file(): Importa un proyecto desde un archivo Python.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.

TkinterLogHandler

Maneja el registro de mensajes en la etiqueta de información de la barra de herramientas.

  • Métodos principales:
    • emit(record): Muestra un mensaje de log en la etiqueta.
      • Argumentos:
        • record (LogRecord): Registro del log a mostrar.
      • Retorna: Ninguno.

App

Clase principal de la aplicación que inicializa la interfaz gráfica y administra los componentes principales.

  • Atributos:

    • TITLE_FONT (CTkFont): Fuente del título.
    • SUBTITLE_FONT (CTkFont): Fuente del subtítulo.
    • LABEL_FONT (CTkFont): Fuente de las etiquetas.
    • ENTRY_STYLE (dict): Estilo predeterminado de las entradas.
    • CHECKBOX_STYLE (dict): Estilo predeterminado de las casillas de verificación.
  • Métodos principales:

    • setup_grid(): Configura el diseño de cuadrícula de la aplicación.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • create_virtual_window(): Genera la ventana virtual principal.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • create_ui_elements(): Crea los elementos principales de la interfaz.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • view_code(): Alterna entre la vista de la interfaz y el código fuente generado.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.
    • create_project(import_proyect=False): Inicializa un nuevo proyecto.

      • Argumentos:
        • import_proyect (bool): Define si se importa un proyecto existente.
      • Retorna: Ninguno.
    • refresh_ui(): Refresca la interfaz con traducciones actualizadas.

      • Argumentos: Ninguno.
      • Retorna: Ninguno.

Ejecución Principal

El archivo concluye con el inicio de la aplicación:

if __name__ == "__main__":
    app = App()
    app.mainloop()

Notas Adicionales

  1. El sistema utiliza CustomTkinter para personalizar widgets de Tkinter.
  2. Se integra un sistema de traducción con soporte multilingüe.
  3. La ventana virtual permite añadir, mover y configurar widgets dinámicamente.
  4. La exportación genera código Python que representa la interfaz diseñada.

Para contribuciones, abre un problema en el repositorio de GitHub o contacta al equipo de desarrollo.

Clone this wiki locally