Создать исполняемый файл tkinter - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь создать исполняемый код из библиотек, таких как Tkinter , Pandas и Подушка .

Я использовал pyinstllaer, cx_freeze и scipy, но я получаю сообщение об ошибке или .exe имеет размер не в соответствии с тем, что вы хотите (например, 500 МБ).

То, что я хочу получить, является исполняемый файл, чтобы иметь возможность открыть его в Windows и / или MA C для использования большинством пользователей.

Код может быть чем-то неуместным для этого вопроса, поэтому мне нужно или, может быть, нам нужны все понятные советы или учебные пособия, позволяющие создать исполняемый файл, поскольку в пересмотренных вопросах решаются только конкретные c случаев, а не общие случаи, подобные тому, что я описываю. Спасибо.

Здесь я показываю код

import tkinter as tk
from tkinter import ttk
#from sismorresistente import *
from tkinter import messagebox
from PIL import Image
import pandas as pd
import os

class sismicidad():
    def __init__(self):
        self.vent_sismi = tk.Tk()
        self.vent_sismi.iconbitmap("sismo_ico_1.ico")
        self.vent_sismi.title("SISMICIDAD")
        self.pest_sismor = ttk.Notebook(self.vent_sismi)
        self.pest_sismor.grid(row=0, column = 0)
        self.sismorresistente_1()
        self.perf_suelos()
        self.zona_sismi()
        self.sismor_funcion()
        self.z_sismi_funcion()
        self.vent_sismi.mainloop()

#Funciones para la estructura de la pestaña SONAS SISMORRESISTENTE:
    def sismorresistente_1(self):
        ...
#Funcion de CERRAR:
    def cerrar_sismicidad(self):
        self.vent_sismi.destroy()

#Funciones para la estructura de la pestaña de PERFILES DE SUELOS:
    def perf_suelos(self):
        ...
    #Mostrar Tabla de Vs:
    def abrir_vs(self):
        self.im = Image.open("C:/Users/Miguel Mogollòn/Desktop/sismicidad/tabla_perf.jpg")
        self.im.show()

    #Funciones para PERFILES DE SUELOS:
    def sismor_funcion(self,event=None):

        self.x1=self.entry_1.get()

        try:
            self.x1=int(self.x1)

        except ValueError:
            messagebox.showwarning("Error", "Escribir solo números enteros.")

        while True:
            if self.x1 > 1500:
                self.eti_lab_11.configure(text="Perfil tipo S0: Roca Dura.", font = "helvetica 12", foreground= "blue")
                self.eti_lab_11.grid(row=3, column=0, padx=20, pady=10)

            elif self.x1 > 500 and self.x1 <= 1500:
                self.eti_lab_11.configure(text="Perfil tipo S1: Roca y Suelos muy rigidos.", font = "helvetica 12", foreground= "blue")
                self.eti_lab_11.grid(row=3, column=0, padx=20, pady=10)

            elif self.x1 > 180 and self.x1 <= 500:
                self.eti_lab_11.configure(text="Perfil tipo S2: Suelos Intermedios.", font = "helvetica 12", foreground= "blue")
                self.eti_lab_11.grid(row=3, column=0, padx=20, pady=10)

            elif self.x1 > 0 and self.x1 <= 180:
                self.eti_lab_11.configure(text="Perfil tipo S3: Suelos Blandos.", font = "helvetica 12", foreground= "blue")
                self.eti_lab_11.grid(row=3, column=0, padx=20, pady=10)

            elif self.x1 == 0:
                self.eti_lab_11.configure(text="")
                self.eti_lab_11.grid(row=3, column=0, padx=20, pady=10)

            break

#Funciones para la estrutura de la pestaña ZONAS SISMICAS:
    def zona_sismi(self, event=None):
        ...
    def abrir_norma(self):
        os.popen("C:/Users/Miguel Mogollòn/Desktop/sismicidad/norma_tecnica_e_030.pdf")

    def z_sismi_funcion(self, event=None):

        self.datos = pd.read_csv("C:/Users/Miguel Mogollòn/Desktop/sismicidad/distri_sism_1.csv", encoding="latin9", sep=";")
        self.df = pd.DataFrame(self.datos)

        self.x2 = self.entry_2.get()

        try:
            self.x2=str(self.x2)

        except ValueError:
            messagebox.showwarning("Error", "Escribir el distrito.")

        #while True:

        self.x2 = str.upper(self.x2)

        for self.idx in self.df.index:

            if self.df.DISTRITO[self.idx] == self.x2:
                self.eti_lab_14.configure(text = f"La zona sismica de '{self.x2}' es: {self.df.ZONA_SISMICA[self.idx]}", font="helvetica 12", foreground = "blue")
                #self.eti_lab_14.grid(row=1, column=1, padx=10, pady=10)
                self.eti_lab_14.place(x=30, y=70)
                break
        else:
            self.eti_lab_14.configure(text=f"Ingrese el distrito correcto",font="helvetica 12", foreground="blue")
            self.eti_lab_14.place(x=30, y=70)
            #self.eti_lab_14.grid(row=1, column=1, padx=10, pady=10)

aplicacion = sismicidad()

Здесь я показываю, что получается, когда я хочу открыть исполняемый файл

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Я использовал платформу pyinstaller для компиляции в исполняемый файл с кодом в окне CMD:

pip install auto-py-to-exe
auto-py-to-exe

Resolved !! Спасибо

0 голосов
/ 11 марта 2020

В python версии 3.8 у pyinstaller есть проблемы. Если прямая установка через pip не помогает (pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz), попробуйте понизить версию до python версии 3.7.

...