Sir,

I created an application which reads a text file and displays results in 
GUI based on the values in text file. The code is working fine with spyder 
(Anaconda3). However when I create exe using pyinstaller, the exe is only 
showing a black screen without opening GUI. Code is given below.

Can anyone help me on this.

regards

Ajith John



import os

import pandas as pd

from tkinter import * 
# importing askopenfile function from class filedialog 
from tkinter.filedialog import askopenfile 

# Define variables to store values
UCMAX = int
UCMIN = int
TOT_VOL = float

#Function for deleting initial lines from original mms file and storing as 
dummy file
def delete_multiple_lines(original_file,dummy_file, line_numbers):
    """In a file, delete the lines at line number in given list"""
    is_skipped = False
    counter = 0
    # Open original file in read only mode and dummy file in write mode
    with open(original_file, 'r') as read_obj, open(dummy_file, 'w') as 
write_obj:
        # Line by line copy data from original file to dummy file
        for line in read_obj:
            # If current line number exist in list then skip copying that 
line
            if counter not in line_numbers:
                write_obj.write(line)
            else:
                is_skipped = True
            counter += 1


def Evaluate_file(): 
    file = askopenfile(filetypes =[('txt Files', '*.txt')]) 
    if file: 
        # create a list 
        lines = []
        # Store range of lines to be deleted 
        for i in range(0,71,1):
            lines.append(i)
  
        # Call delete line function with argument main text, dummy text 
files, initial rows to be deleted
                        
        delete_multiple_lines(os.path.basename(file.name),'dummy.txt',lines)


        #Read text file
        data = 
pd.read_fwf('dummy.txt',col_index=0,delim_whitespace=True,skipinitialspace 
=True,skip_blank_lines=True)

        #Delete invalid/unrequired rows
        data = data.dropna()

        #Delete second column which is not useful
        data = data.drop([0, 1])

        # Create Index column for better analysis
        data = data.reset_index()

        # Delete initial index column as the number is not continuous due 
to deletion of unwanted rows
        data = data.drop(['index'], axis = 1) 

        # Create Column Header row
        data.columns=["Status", "Values", "State", "CF", "G2M", "M2G", 
"OV", "UV", "Bypass_OWN", "BYPASS_PARTNER", "TEMP_ERR", "TEMP_HIGH1", 
"TEMP_HIGH2", "DRV_PWR", "UCE_SAT", "DCiUV", "DCiOV", 
"COMFLT_MI2GIB_COMFLT_GIB2MI", "COMFLTCntSUM_MI2GIB_COMFLTCntSUM_GIB2MI"]

        # Split the Values column as so many fields are merged while 
reading and store in new dataframe
        data1 = data["Values"].str.split(" ",expand=True,)

        #Delete unwanted columns in new Data frame with split fields
        data1 = data1.drop([0,3, 5,7,8,10,11,12,13,15,16,17,18],axis=1)

        # Remove unwanted : in sub module number field 
        data1[1] = data1[1].str.replace(':','')

        
data1.columns=["SM_NUMBER","HEX1","HEX2","Operational","Voltage","Present_status"]

        # Delete the values column with so many fields & status column in 
original data frame which are not required
        data = data.drop(['Values'],axis=1)
        data = data.drop(['Status'],axis=1)

        # Merge temporary dataframe with splitted fields of values and 
original dataframe
        data = pd.concat([data1,data],axis=1)

        #Query for modules in block status and strore in dataframe
        data1=data.query(' Present_status == "HB_BLOCK" ')

        # Remove V from Voltage field
        data["Voltage"] = data["Voltage"].str.replace('V','')

        # Convert Voltage field to number
        data["Voltage"] = data["Voltage"].astype(int)

        #Find UC Max
        # print("UCMAX: ", data["Voltage"].max(), "Volts")
        UCMAX=data.loc[data["Operational"]=="Operational",'Voltage'].max()

        #Find UC Min
        UCMIN=data.loc[data["Operational"]=="Operational",'Voltage'].min()

        # Find total voltage in arm by adding voltages of capacitors whose 
SM status is ON
        
TOT_VOL=data.loc[data["Present_status"]=="HB_ON",'Voltage'].sum()/1000


        data2 = data1[['SM_NUMBER','Operational','Present_status']]
        print ("\n Blocked submodules:\n", data2)

        #Update text boxes
        T1.delete("insert linestart", "insert lineend")
        T1.insert(END, UCMAX)  
        
        T2.delete("insert linestart", "insert lineend")
        T2.insert(END, UCMIN)                         
        
        T3.delete("insert linestart", "insert lineend")
        T3.insert(END, TOT_VOL)   
        
        T4.delete('1.0', END)
        T4.insert(END, data2)  
        
root = Tk() 
root.geometry('600x600') 

var = StringVar()
label = Label( root, textvariable=var, relief=RAISED )

var.set("Details will be displayed below after opening file")
label.pack(pady=20)

btn = Button(root, text ='File Open ...', command = lambda:Evaluate_file()) 
btn.pack(side = TOP, pady = 10) 

lbl1=Label(root, text='UCMAX in Volts').pack()


T1 = Text(root, height=1, width=10)
T1.pack(pady=10)

lbl2=Label(root, text='UCMIN in Volts').pack()


T2 = Text(root, height=1, width=10)
T2.pack(pady=10)


lbl3=Label(root, text='TOTAL ARM VOLTAGE in Kilo Volts').pack()
#lbl3.pack(side = LEFT)

T3 = Text(root, height=1, width=10)
T3.pack(pady=10)

lbl3=Label(root, text='Abnormalities').pack()
#lbl3.pack(side = LEFT)

T4 = Text(root, height=10, width=70)
T4.pack(pady=10)

mainloop()

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyinstaller/da41c1e0-41ae-4fd3-8f73-47e1454a95den%40googlegroups.com.

Reply via email to