Como crear un generador de curriculum en Python

1. Estructura del proyecto

2. models/curriculum_base -Clase.

3. models/templates.py — Plantillas heredadas (LinkedIn, Europass, Minimalista, Moderna).

4. app.py— Servidor Flask listo para desplegar.

5. HTML integrable en tu web (formulario + vista previa) HTML

(Ojo: en resumen faltaba paréntesis en oninput, mejor usar oninput="onFormChange()" como en el resto.)

6, JavaScript con autosave + vista previa en tiempo real (muy comentado)




Crea una ventana de Tkinter con varios botones.


🟦 ¿Qué hace este código?

Crea una ventana de Tkinter con varios botones.
Cada botón hace algo distinto: abrir una web, llamar a una clase, o cerrar la ventana.

Además, dentro de la clase MenuApp se crean todas las herramientas que usarás en tu menú (Variables, Listas, Colores, etc.).


🟦 Explicación clara del código

1. Importaciones

import tkinter as tk
import webbrowser

  • tkinter → sirve para crear ventanas y botones.
  • webbrowser → sirve para abrir páginas web.

2. Importas tus clases

from ClassMenu import Menus
from ClassVariables import Variables
...

Estas son tus clases personalizadas.
Las usarás cuando el usuario pulse un botón.


3. Creas la clase principal del menú

class MenuApp:

Esta clase contiene todo el menú.


4. Constructor __init__

def __init__(self, root):

  • root es la ventana principal.
  • Aquí configuras la ventana y creas los botones.

5. Configuración de la ventana

self.root = root
self.root.configure(bg="#1e1e1e")
self.root.title(" Programación es Python ")

  • Guardas la ventana en self.root.
  • Le pones un color de fondo.
  • Le pones un título.

6. Creas las instancias de tus clases

self.menu1 = Variables()
self.app = AppColores()
self.numerobinario = DecimalBinario()
...

Esto significa:

👉 “Voy a usar estas clases dentro del menú, así que las preparo aquí”.


7. BOTÓN 1 → Variables

boton_variables = tk.Button(
    root,
    text="VARIABLES",
    ...
    command=lambda: (
        self.menu1.variables(),
        webbrowser.open_new_tab("https://danielcaraballo.es/variables-en-python/")
    )
)
boton_variables.pack(pady=5)

¿Qué hace este botón?

  1. Llama al método variables() de tu clase Variables.
  2. Abre tu página web sobre variables.

Todo eso ocurre al pulsarlo.


8. BOTÓN 2 → f-format

boton_format = tk.Button(
    root,
    text="f- Format",
    ...
    command=lambda: webbrowser.open_new_tab("https://danielcaraballo.es/f-f-format-de-un-strings/")
)
boton_format.pack(pady=10)

Este botón solo abre una web.


9. BOTÓN 3 → Listas

boton_listas = tk.Button(
    root,
    text="Listas",
    ...
    command=lambda: webbrowser.open_new_tab("https://danielcaraballo.es/las-listas-en-python/")
)
boton_listas.pack(pady=10)

Abre tu página sobre listas.


10. BOTÓN 4 → Instalación

boton_instalacion = tk.Button(
    root,
    text="Instalación y IDE de trabajo",
    ...
    command=lambda: webbrowser.open_new_tab("https://danielcaraballo.es/lenguaje-de-programacion-python/")
)
boton_instalacion.pack(pady=10)

Abre tu página sobre instalación de Python.


11. BOTÓN 5 → Cerrar menú

boton_volver = tk.Button(
    root,
    text="Menu anterior",
    ...
    command=root.destroy
)
boton_volver.pack(pady=10)

Este botón cierra la ventana.


12. Método para iniciar el menú

@staticmethod
def iniciar_menu():
    root = tk.Tk()
    root.geometry("300x300+900+20")
    MenuApp(root)
    root.mainloop()

Esto:

  • Crea la ventana.
  • Le da tamaño y posición.
  • Crea el menú dentro de la ventana.
  • Mantiene la ventana abierta.

🟦 Resumen súper fácil

Tu código:

  • Crea una ventana.
  • Crea varios botones.
  • Cada botón abre una web o llama a una clase.
  • El último botón cierra la ventana.
  • Todo está organizado dentro de una clase llamada MenuApp.




Clases (class): Programación POO, y cómo abrir una página WEB en Python.

La programación orientada a objetos (POO) se basa en agrupar el código en objetos para facilitar su reutilización. Todo se define como objetos utilizando la palabra clave ‘class’. Las funciones contenidas en una clase se denominan métodos y es importante recordar incluir el término ‘self’ dentro de ellos.

Seria algo asi:

  • class LaClase :# Se debe de escribir la primera en mayúscula ( Pascal Case )

    • def la_fucion (self):
    • print (» Hola mundo «)

  • # La llamada a la clase
  • laclase=LaClase()
  • laclase.la_fucion()

import webbrowser # Importador para llamar una pagina web

class ElbloddeMia (): # Definicion de clase con el nombre ElblogdeMia
programacion =» Lenguajes de programación » # Objetos instanciados
historia =» Quien fue Viriato»
logistica =» Ley de tacógrafo»

De otra forma serian tediosos y enormes de tamaño nuestro programa en el sistema secuencial eso es lo que ocurre

Ejemplo de codigo fuente:

Podemos definir métodos en las clases con def.

Para crear Código fuente en POO ( programación orientada a objeto. )

Tenemos que poner los archivos de las clases dentro de la misma carpeta y definir el main inicial.

Sigue este articulo donde pongo los ejemplos en POO. de una calculadora.

  • Calculadora creada en POO Python y hacer narrar al PC las operaciones – Blog Daniel & Mia (danielcaraballo.es)



Calculadora creada en POO Python y hacer narrar al PC las operaciones. Parte uno

Todos los ARCHIVOS de las clases y módulos deben de estar guardados dentro de la misma carpeta:

Este sería el main:

La clase principal donde se toman todas las decisiones:

  • Forma de hacer hablar al PC: ____________________________________________________________________
  • Aqui están los condicionales, menú
  • import win32com.client# Aqui importamos
  • Debes de instalar el módulo pypiwin32 desde la línea de comandos así:
  • Si todo esta correcto debería ser como en esta imagen:
  • pip no se reconoce como un comando interno o externo -> con este mensaje instala la version de Python de nuevo.

  • speaker = win32com.client.Dispatch(«SAPI.SpVoice») # Este es el código que hace que el ordenador narre las operaciones

__Fin parte uno.

Calculadora creada en POO Python. Parte dos. – Blog Daniel & Mia (danielcaraballo.es)