Foros Python

Versión completa: Ejecutable de varios programas
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola a tod@s!!!

Espero que me puedan echar una mano con este problema.
He desarrollado un pequeño crm que parte de una pantalla principal y con botones se llaman a los programas para gestionar los clientes, contactos, ofertas...

No sé como crear el ejecutable para que funcione.

Adjunto el código del programa principal que llama a los otros programas según el botón que se pulse.

from tkinter import *
from tkinter import messagebox
from PIL import Image, ImageTk
import subprocess

root = Tk()
root.resizable(0,0)
root.geometry("1400x800+250+130")
root.title("CRM")
root.iconbitmap("mnd.ico")

def salirAplicacion():
        salir=messagebox.askquestion("Salir","¿Desea salir de la aplicación?")
        if salir == 'yes':
            root.quit()

def programaClientes():
    subprocess.Popen(["python", "mantenimiento_clientes.pyw"])

def programaContactos():
    subprocess.Popen(["python", "mantenimiento_contactos.pyw"])

def programaOfertas():
    subprocess.Popen(["python", "mantenimiento_ofertas.pyw"])

barraMenu=Menu(root)
root.config(menu=barraMenu)

menuActividades=Menu(barraMenu, tearoff=0)
barraMenu.add_cascade(label="Actividades", menu=menuActividades)
menuActividades.add_command(label="Contactos", command=programaContactos)
menuActividades.add_command(label="Clientes", command=programaClientes)
menuActividades.add_separator()
menuActividades.add_command(label="Ofertas", command=programaOfertas)
menuActividades.add_separator()
menuActividades.add_command(label="Salir", command=salirAplicacion)

menuAyuda=Menu(barraMenu, tearoff=0)
barraMenu.add_cascade(label="Ayuda", menu=menuAyuda)
menuAyuda.add_command(label="Acerca de")

fondo = PhotoImage(file="fondoPantPrincipal.ppm")
lbFondo = Label(root,image=fondo).place(x=0, y=0)

img_file = Image.open("01_Contactos.jpg")
img_file = img_file.resize((150, 150))
img = ImageTk.PhotoImage(img_file)
b1 = Button(root, image=img, command=programaContactos)
b1.place(x=50, y=50)


img_file1 = Image.open("02_Clientes.jpg")
img_file1 = img_file1.resize((150, 150))
img1 = ImageTk.PhotoImage(img_file1)
b2 = Button(root, image=img1, command=programaClientes)
b2.place(x=210, y=50)

img_file2 = Image.open("03_Ofertas.jpg")
img_file2 = img_file2.resize((150, 150))
img2 = ImageTk.PhotoImage(img_file2)
b3 = Button(root, image=img2, command=programaOfertas)
b3.place(x=370, y=50)

root.mainloop()
Hola, bienvenido.

¿Hay alguna razón por la cual tienen que ser programas distintos? Te convendría que fueran distintas ventanas de un mismo programa (usando tk.Toplevel). Como sea, podés convertirlo a un ejecutable usando cualquiera de estas tres herramientas: https://recursospython.com/guias-y-manua...-y-py2exe/. Solo tené en cuenta que, si convertís los programas a ejecutables, vas a tener que cambiar tus subprocess.Popen() para que invoquen a los ejecutables (.exe) en lugar de a los scripts de Python (.py).

Saludos
Hola Francisco,
Son programas distintos porque cada uno gestiona cosas distintas, uno gestiona los clientes, otro las ofertas....

Lo que hecho ha sido convertirlos todos a .exe por separado y en lugar de llamar al .pyw llamo al .exe

No me acaba de gustar pero así parece que funcina.

Saludos