我的节目输出在哪里?

时间:2015-10-09 09:06:20

标签: python user-interface tkinter cx-freeze xlsxwriter

我为自己创建了一个非常好的大小程序,我会根据要求提供代码。它只是一个程序,它在Web上提交表单并每次获取html输出并将其转换为xlsx文件。

当我在计算机上执行此操作时,它工作正常并使用.py文件将.xlsx文件输出到我的文件夹(我还有一个GUI)。然后我继续成功打包并使用cx_Freeze将其打包成安装程序。它成功安装在另一台计算机上。 (哇,我很高兴:))

然而,当我的程序运行并且我做了所有正确的输入并运行我的程序...我的XLSX文件无处可寻:(我怎么能找到它?

以下是代码: 该文件名为insurance_premiums.py

__author__ = 'kennytruong'
#CREATED BY KENNY TRUONG of SGV and CAL POLY POMONA


import urllib.parse, urllib.request
import xlsxwriter
from bs4 import BeautifulSoup
import time
from tkinter import *
import tkinter.messagebox
import webbrowser



def quit():
    quit() #for our installer

def get_premiums(location, coverage_type, coverage_amt, home_age, worksheet, worksheet2, colholder):
    formEntries = {'location':location,   #fills out the form with our values
                   'coverageType':coverage_type,
                   'coverageAmount':coverage_amt,
                   'homeAge':home_age}
    inputData = urllib.parse.urlencode(formEntries)
    inputData = inputData.encode('utf-8')
    request = urllib.request.Request(URL, inputData) #makes page request to URL and pases our encoded entries
    response = urllib.request.urlopen(request)
    responseData = response.read() #reads the output of submitting our form
    soup = BeautifulSoup(responseData, "html.parser") #create my soup object with my data
    parse_it(soup, worksheet, worksheet2, colholder)


def parse_it(pass_soup, worksheet, worksheet2, colholder):
    rows = []
    data_in_table = pass_soup.find_all('table')
    t2 = None
    for t3 in data_in_table: #need this to loop properly
        t1, t2 = t2, t3
    for row in t1.find_all('tr'):
        cols = row.find_all(['td', 'th']) #find the stuff in the individual columns of the selected row
        cols = [col.text.strip() for col in cols] #cols is a list of all our text values found in the <tr> tags
        rows.append(cols) #adds our newly found info in cols into the list called 'rows'
    data = [cols[0:3] for cols in rows] #gets first list (left side)
    data2 = [cols[4:7] for cols in rows] #data2 is the right half, data is the left half
    name_placeholder = 2
    rowholder_s1 = 1
    rowholder_s2 = 1
    for row in data: #for the column with the title
        output_name = row[0]
        worksheet.write('A' + str(name_placeholder), output_name)
        worksheet2.write('A' + str(name_placeholder), output_name)
        name_placeholder += 1
    for row in data: #SHEET 1
        worksheet.write(rowholder_s1, colholder, row[1])
        worksheet.write(0, 0, "Deductible: " + row[2])
        rowholder_s1 += 1
    for row in data2:  #SHEET 2
        worksheet2.write(rowholder_s2, colholder, row[1])
        worksheet2.write(0, 0, "Deductible: " + row[2])
        rowholder_s2 += 1


def helpme():
    tkinter.messagebox.showinfo('Need help?', "Select your options by clicking on their respective radio buttons.\n\n\nOnly a valid combination "
                                              "from the Homeowners Premium Survey\nwill work properly. Failure to select a valid combination will "
                                              "result in an incorrect output!\n\nPlease be patient while the program runs.\n\n\nYou may also put a custom coverage amount. Please do not include "
                                              "the\ncomma when typing in the entry, as this program is dependent on the current website configuration"
                                              " of the California Department of Insurance Homeowners Premium Survey.\n\n\n\n"
                                              "Created by Kenny Truong.\nkennytruongproskeet@gmail.com\n\nPlease contact me for further support.\nAll Rights Reserved.")


def aboutus():
    tkinter.messagebox.showinfo('About', "Here at Shift Insurance, we're committed to helping you get the "
                                            "lowest rates and biggest savings, while providing high quality customer "
                                            "service and a hassle free process. Part of that commitment means creating the "
                                            "best tools possible which work around the clock to make sure that you're only getting "
                                            "the best bang for your buck!\n\nThis tool is one of many in our arsenal which we use to"
                                            " analyze regional data to make sure that you're getting the most value possible."
                                            "\n\nCopyright 2015 Shift Insurance, All Rights Reserved.")


def prepare_input():  #function to confirm input parameters
    dowestart = tkinter.messagebox.askyesno(title='Verify Inputs', message='Your input parameters are:\n\n\nCOVERAGE TYPE: '+selected_coveragetype.get()+'\n\nSELECTED AGE: '+selected_age.get()+'\n\nCOVERAGE AMOUNT: '+selected_amount.get()+'\n\n\n\nARE YOU SURE YOU WANT TO CONTINUE?') #need function for yes
    print('Type:', selected_coveragetype.get(),'   Age:', selected_age.get(),'   Amount:', selected_amount.get())
    if dowestart > 0:  #if they confirm the parameters ok then we run the program.
        start_time = time.clock()  #to test the program time
        coveragetype_torun = selected_coveragetype.get()
        coverageamount_torun = selected_amount.get()
        coverageage_torun = selected_age.get()


        workbook = xlsxwriter.Workbook('insurance_premiums.xlsx') #creation of notebook
        worksheet = workbook.add_worksheet()
        worksheet2 = workbook.add_worksheet()
        worksheet.set_column('A:A', 45)
        worksheet.set_column('B:KK', 30) #sets the width of each column
        worksheet2.set_column('A:A', 45)
        worksheet2.set_column('B:KK', 30)

        cityholder = 1
        colholder = 1

        for location in LOCATIONS: #need to pass their selection into this loop
            worksheet.write(0,cityholder, location) #writes city name for sheet 1 + 2
            worksheet2.write(0, cityholder , location)
            update_status(location)
            root.update()
            print('Now running parameters: ', location, coveragetype_torun, coverageamount_torun, coverageage_torun)
            get_premiums(location, coveragetype_torun, coverageamount_torun, coverageage_torun, worksheet, worksheet2, colholder)
            cityholder += 1
            colholder += 1
        workbook.close()
        mytimer(start_time)
        print(time.clock() - start_time, "seconds") #for the time of the program
    else:
        return

def mytimer(start_time): #function to do the timer
    timer = time.clock() - start_time
    timertext = 'Your excel file has been created! Analysis length in seconds:  ' + str(timer)
    status_bar.configure(text=timertext)

def checksurvey_function(): #function to check website
    webbrowser.open('https://interactive.web.insurance.ca.gov/survey/')
    return

def update_status(location): #function tup update status bar
    updated_status_text = "Retrieving information for the city of: " + location
    status_bar.configure(text=updated_status_text)
    return

URL = "https://interactive.web.insurance.ca.gov/survey/survey?type=homeownerSurvey&event=HOMEOWNERS"

LOCATIONS = '''
ALAMEDA ALAMEDA
ALAMEDA BERKELEY
ALAMEDA FREMONT
ALAMEDA HAYWARD
ALAMEDA LIVERMORE
ALAMEDA OAKLAND - Piedmont
ALAMEDA OAKLAND - San Leandro
ALAMEDA UNION CITY
ALPINE MERKLEEVILLE
AMADOR PIONEER
BUTTE CHICO - Chapman Town
BUTTE CHICO - Enloe Memorial Park
CALAVERAS VALLEY SPRING
COLUSA COLUSA
CONTRA COSTA ANTIOCH
CONTRA COSTA CONCORD
CONTRA COSTA RICHMOND
CONTRA COSTA WALNUT CREEK
DEL NORTE CRESCENT CITY
EL DORADO PLACERVILLE
EL DORADO SO LAKE TAHOE
FRESNO CLOVIS
FRESNO FRESNO - Biola Junction
FRESNO FRESNO - Sunnyside
FRESNO Reedley
GLENN ORLAND
HUMBOLDT EUREKA - Carson Park
HUMBOLDT EUREKA - Pine Hill
HUMBOLDT MCKINLEYVILLE
IMPERIAL CALEXICO
IMPERIAL EL CENTRO
INYO BISHOP
KERN BAKERSFIELD - Kern City
KERN BAKERSFIELD - Panama
KERN DELANO
KERN RIDGECREST
KERN WASCO
KINGS HANFORD
LAKE LAKEPORT
LASSEN SUSANVILLE
LOS ANGELES ALHAMBRA
LOS ANGELES ALTADENA
LOS ANGELES AZUSA
LOS ANGELES BALDWIN PARK
LOS ANGELES BELL
LOS ANGELES BELLFLOWER
LOS ANGELES BURBANK
LOS ANGELES CANOGA PARK
LOS ANGELES CANYON COUNTRY
LOS ANGELES CARSON
LOS ANGELES CERRITOS
LOS ANGELES CHATSWORTH
LOS ANGELES COMPTON
LOS ANGELES CULVER CITY
LOS ANGELES EL SEGUNDO
LOS ANGELES GARDENA
LOS ANGELES GLENDALE
LOS ANGELES GLENDORA
LOS ANGELES HAWTHORNE
LOS ANGELES HOLLYWOOD-WEST
LOS ANGELES HUNTINGTON PARK
LOS ANGELES INGLEWOOD
LOS ANGELES LA PUENTE
LOS ANGELES LA-CENTRAL
LOS ANGELES LA-EAST
LOS ANGELES LA-ECHO PARK-SILVER LAKE
LOS ANGELES LA-EL SERENO
LOS ANGELES LA-GRIFFITH
LOS ANGELES LA-HIGHLAND PARK
LOS ANGELES LA-MAR VISTA-CULVER CITY
LOS ANGELES LA-MID CITY
LOS ANGELES LA-SO. CENTRAL
LOS ANGELES LA-VERMONT
LOS ANGELES LA-WAGNER
LOS ANGELES LA-WEST
LOS ANGELES LA-WESTCHESTER
LOS ANGELES LA-WILSHIRE-LA BREA
LOS ANGELES LAKEWOOD
LOS ANGELES LANCASTER
LOS ANGELES LONG BEACH
LOS ANGELES LONG BEACH - COLLEGE
LOS ANGELES MONROVIA
LOS ANGELES MONTEBELLO
LOS ANGELES MONTEREY PARK
LOS ANGELES NORTHRIDGE - 91325
LOS ANGELES NORTHRIDGE - 91326
LOS ANGELES NORWALK
LOS ANGELES PACIFIC PALISADES
LOS ANGELES PACOIMA
LOS ANGELES PALMDALE
LOS ANGELES PALOS VERDES
LOS ANGELES PANORAMA CITY
LOS ANGELES PASAADENA
LOS ANGELES PICO RIVERA
LOS ANGELES POMONA
LOS ANGELES RANCHO PALOS VERDE
LOS ANGELES REDONDO BEACH
LOS ANGELES RESEDA
LOS ANGELES ROSEMEAD
LOS ANGELES SAN PEDRO
LOS ANGELES SANTA CLARITA
LOS ANGELES SANTA MONICA
LOS ANGELES SOUTH GATE
LOS ANGELES SYLMAR
LOS ANGELES TEMPLE CITY
LOS ANGELES TORRANCE
LOS ANGELES VAN NUYS
LOS ANGELES WEST COVINA
LOS ANGELES WOODLAND HILLS
MADERA MADERA - East Madera
MADERA MADERA - West Madera
MARIN MILL VALLEY
MARIN SAN RAFAEL
MARIPOSA MARIPOSA
MENDOCINO UKIAH
MENDOCINO WILLITS
MERCED MERCED
MODOC ALTURAS
MONO MAMMOTH LAKES
MONTEREY MONTEREY
MONTEREY SALINAS
MONTEREY SEASIDE
NAPA NAPA
NEVADA GRASS VALLEY
ORANGE ANAHEIM - Brookhurst Center
ORANGE ANAHEIM - Federal
ORANGE BUENA PARK
ORANGE COSTA MESA
ORANGE FOUNTAIN VALLEY
ORANGE FULLERTON
ORANGE GARDEN GROVE
ORANGE HUNTINGTON BH
ORANGE IRVINE
ORANGE LA HABRA
ORANGE LAGUNA BEACH
ORANGE LAGUNA NIGUEL
ORANGE LAKE FOREST
ORANGE MISSION VIEJO
ORANGE NEWPORT BEACH
ORANGE ORANGE
ORANGE PLACENTIA
ORANGE SAN CLEMENTE
ORANGE SANTA ANA - Centennial Park
ORANGE SANTA ANA - Logan Park
ORANGE STANTON
ORANGE TUSTIN
ORANGE WESTMINSTER
ORANGE YORBA LINDA
PLACER LINCOLN
PLACER ROSEVILLE - Downtown
PLACER ROSEVILLE - Maidu Park
PLUMAS QUINCY
RIVERSIDE BANNING
RIVERSIDE CATHEDRAL CITY
RIVERSIDE CORONA - 92879
RIVERSIDE CORONA - 92882
RIVERSIDE DESERT HOT SPRINGS
RIVERSIDE HEMET
RIVERSIDE INDIO
RIVERSIDE LAKE ELSINORE
RIVERSIDE MORENO VALLEY
RIVERSIDE MURRIETA
RIVERSIDE PERRIS
RIVERSIDE RIVERSIDE - 92503
RIVERSIDE RIVERSIDE - 92506
RIVERSIDE TEMECULA
SACRAMENTO CARMICHAEL
SACRAMENTO FAIR OAKS
SACRAMENTO FOLSOM
SACRAMENTO FRUITRIDGE
SACRAMENTO GREENHAVEN
SACRAMENTO SACRAMENTO - Rosemont
SACRAMENTO SACRAMENTO - Southgate
SAN BENITO HOLLISTER
SAN BERNARDINO ADELANTO
SAN BERNARDINO BARSTOW
SAN BERNARDINO BIG BEAR LAKE
SAN BERNARDINO CHINO
SAN BERNARDINO CHINO HILLS
SAN BERNARDINO COLTON
SAN BERNARDINO FONTANA
SAN BERNARDINO HESPERIA
SAN BERNARDINO ONTARIO
SAN BERNARDINO RANCHO CUCAMONGA
SAN BERNARDINO REDLAND
SAN BERNARDINO RUNNING SPRINGS
SAN BERNARDINO SAN BERNARDINO
SAN BERNARDINO TWENTYNINE PALMS
SAN BERNARDINO UPLAND
SAN BERNARDINO VICTORVILLE
SAN BERNARDINO YUCAIPA
SAN DIEGO CARLSBAD
SAN DIEGO CHULA VISTA
SAN DIEGO DEL MAR
SAN DIEGO EL CAJON
SAN DIEGO ENCINITAS
SAN DIEGO ESCONDIDO
SAN DIEGO FALLBROOK
SAN DIEGO LA MESA
SAN DIEGO LAKESIDE
SAN DIEGO MIRA MESA
SAN DIEGO NATIONAL CITY
SAN DIEGO OCEAN BEACH
SAN DIEGO OCEANSIDE
SAN DIEGO PACIFIC BEACH
SAN DIEGO POWAY
SAN DIEGO RAMONA
SAN DIEGO RANCHO BERNARDO
SAN DIEGO SAN DIEGO - 92105
SAN DIEGO SAN DIEGO - 92154
SAN DIEGO SAN MARCOS
SAN DIEGO SPRING VALLEY
SAN FRANCISCO SAN FRANCISCO - Glen Park
SAN FRANCISCO SAN FRANCISCO - Mission
SAN FRANCISCO SAN FRANCISCO - Nob Hill
SAN FRANCISCO SAN FRANCISCO-Sunset District
SAN JOAQUIN STOCKTON - 95206
SAN JOAQUIN STOCKTON - 95207
SAN JOAQUIN TRACY
SAN L OBISPO SAN L OBISPO
SAN LUIS OBISPO PASO ROBLES
SAN MATEO DALY CITY
SAN MATEO PACIFICA
SAN MATEO REDWOOD CITY
SAN MATEO SAN MATEO
SANTA BARBARA LOMPOC
SANTA BARBARA SANTA BARBARA - Downtown
SANTA BARBARA SANTA BARBARA - El Sueno
SANTA BARBARA SANTA MARIA
SANTA CLARA CAMPBELL
SANTA CLARA CUPERTINO
SANTA CLARA EAST PALO ALTO
SANTA CLARA SAN JOSE - 95111
SANTA CLARA SAN JOSE - 95127
SANTA CLARA SAN JOSE - Alamitos
SANTA CLARA SAN JOSE - Campbell
SANTA CLARA SANTA CLARA
SANTA CLARA SUNNYVALE
SANTA CRUZ SANTA CRUZ
SANTA CRUZ WATSONVILLE
SHASTA REDDING - Enterprise
SHASTA REDDING - Silverthorn
SIERRA LOYALTON
SISKIYOU YREKA
SOLANO FAIRFIELD
SOLANO SUISUN CITY
SOLANO VACAVILLE
SOLANO VALLEJO - Castlewood Park
SOLANO VALLEJO - Downtown
SONOMA PETALUMA
SONOMA SANTA ROSA - City Park
SONOMA SANTA ROSA-Montgomery Village
STANISLAUS MODESTO - Dry Creek
STANISLAUS MODESTO - Whitmore Park
STANISLAUS TURLOCK
SUTTER YUBA CITY
TEHAMA RED BLUFF
TRINITY LEWISTON
TULARE PORTERVILLE
TULARE VISALIA
TUOLUMNE JAMESTOWN
TUOLUMNE SONORA
VENTURA CAMARILLO
VENTURA OXNARD - Northwest
VENTURA OXNARD - South
VENTURA SIMI VALLEY
VENTURA THOUSAND OAKS
YOLO DAVIS
YOLO WOODLAND
YUBA MARYSVILLE
'''.strip().split('\n') #strip() basically removes whitespaces




root = Tk()
root.geometry('1100x530+50+50') #makes a window 850x700px and 50px from top and 50px from left corner
root.title('Shift Insurance Premium Rate Comparison Tool')


image = PhotoImage(file='shift insurance.gif') #have to create an object for it
image_label = Label(root, image=image)
image_label.place(x=0,y=0) #places the image in the top left

title = Label(text="To begin, select one option for the type of insurance, coverage amount, and home age. An xml file containing the most\n recent information from the California Department of Insurance Homeowners Premium Survey will be created.\nIt will run every city available, so please make sure to verify the validity of your inputs", font=('Arial', 12))
title.place(x=275,y=0)

help_button = Button(root, text="HELP", command=helpme, padx=10, pady=5, bg='#1488CD') #tie help button to function helpme()
help_button.place(x=300,y=65)

about_button = Button(root, text="ABOUT", command=aboutus, padx=10, pady=5, bg='#1488CD')
about_button.place(x=385,y=65)

go_button = Button(root, text="BEGIN ANALYSIS", command=prepare_input, padx=25, pady=5, bg='green')
go_button.place(x=900,y=67)

checksurvey_button = Button(root, text="HOMEOWNERS PREMIUM SURVEY", command=checksurvey_function, padx=10, pady=5, bg='#1488CD')
checksurvey_button.place(x=480, y=65)




#***THE FRAME FOR THE STATUS BAR************************************************************

status_bar = Label(root, text='Select options then begin analysis.', bd=1, relief=SUNKEN, anchor=W) #creates our status bar and relief is sunken so it will sink in. Anchor is where we want our WORDS!
status_bar.pack(side=BOTTOM, fill=X)
#********************************************************************************************




#****THE FRAME FOR THE TYPE OF INSURANCE COVERAGE**************************************************
type_frame = Frame(root, width=1100, height=100)    #make frame so easier to work with
type_frame.place(x=0, y=130)
type_description = Label(type_frame, text="Select one type of insurance from the following:")      #create a label inside type_frame for simpler placement
type_description.place(x=10, y=15) #place at these coordinates within type_frame

selected_coveragetype = StringVar()
selected_coveragetype.set("HOMEOWNERS") #sets the default to the button with value "1"
type_radio1 = Radiobutton(type_frame, text='HOMEOWNERS', value ='HOMEOWNERS', variable=selected_coveragetype).place(x=320, y=15) #each item needs its own value, but these are all for 1 variable called selected_coveragetype
type_radio2 = Radiobutton(type_frame, text='CONDOMINIUM', value ='CONDOMINIUM', variable=selected_coveragetype).place(x=460, y=15)
type_radio3 = Radiobutton(type_frame, text='MOBILEHOME', value ='MOBILEHOME', variable=selected_coveragetype).place(x=600, y=15)
type_radio4 = Radiobutton(type_frame, text='RENTERS', value ='RENTERS', variable=selected_coveragetype).place(x=730, y=15)
type_radio5 = Radiobutton(type_frame, text='EARTHQUAKE - Single Family', value='EARTHQUAKE - Single Family', variable=selected_coveragetype).place(x=830, y=15)
type_radio6 = Radiobutton(type_frame, text='EARTHQUAKE - Condominium', value='EARTHQUAKE - Condominium', variable=selected_coveragetype).place(x=320, y=55)
type_radio7 = Radiobutton(type_frame, text='EARTHQUAKE - Mobilehome', value='EARTHQUAKE - Mobilehome', variable=selected_coveragetype).place(x=545, y=55)
type_radio8 = Radiobutton(type_frame, text='EARTHQUAKE - Renters', value='EARTHQUAKE - Renters', variable=selected_coveragetype).place(x=760, y=55)
#probably need a function to put that data into the input






#*****THE FRAME FOR THE SELECTED AGE OF INSURANCE COVERAGE*****************************
age_frame = Frame(root, width=1100, height=100)
age_frame.place(x=0, y=265)
age_description = Label(age_frame, text="Select one home age from the following:\n(You may also input your own, but only\n a valid home age will work)")
age_description.place(x=10, y=15)

selected_age = StringVar()
selected_age.set('New') #sets default
age_radio1 = Radiobutton(age_frame, text='New', value='New', variable=selected_age).place(x=320, y=15)
age_radio2 = Radiobutton(age_frame, text='1-3 Years', value='1-3 Years', variable=selected_age).place(x=390,y=15)
age_radio3 = Radiobutton(age_frame, text='1-15 Years', value='1-15 Years', variable=selected_age).place(x=485,y=15)
age_radio4 = Radiobutton(age_frame, text='4-6 Years', value='4-6 Years', variable=selected_age).place(x=580,y=15)
age_radio5 = Radiobutton(age_frame, text='7-15 Years', value='7-15 Years', variable=selected_age).place(x=685,y=15)
age_radio6 = Radiobutton(age_frame, text='16-25 Years', value='16-25 Years', variable=selected_age).place(x=790,y=15)
age_radio7 = Radiobutton(age_frame, text='16-30 Years', value='16-30 Years', variable=selected_age).place(x=895,y=15)
age_radio8 = Radiobutton(age_frame, text='26-40 Years', value='26-40 Years', variable=selected_age).place(x=320,y=55)
age_radio9 = Radiobutton(age_frame, text='41-70 Years', value='41-70 Years', variable=selected_age).place(x=425,y=55)
age_radio10 = Radiobutton(age_frame, text='Not Applicable', value='NA', variable=selected_age).place(x=530,y=55)
#*************************************************************************************





#******THE FRAME FOR THE SELECTED AMOUNT OF INSURANCE COVERAGE*****************
amount_frame = Frame(root, width=1100, height=100)
amount_frame.place(x=0, y=400)

amount_description = Label(amount_frame, text="Select a coverage amount from the following:\n(You may also input your own\n valid custom amount)")
amount_description.place(x=10,y=15)

selected_amount = StringVar()
selected_amount.set('15000')
amount_radio1 = Radiobutton(amount_frame, text='15000', value='15000', variable=selected_amount).place(x=320,y=15)
amount_radio2 = Radiobutton(amount_frame, text='25000', value='25000', variable=selected_amount).place(x=400,y=15)
amount_radio3 = Radiobutton(amount_frame, text='35000', value='35000', variable=selected_amount).place(x=480,y=15)
amount_radio4 = Radiobutton(amount_frame, text='50000', value='50000', variable=selected_amount).place(x=560,y=15)
amount_radio5 = Radiobutton(amount_frame, text='75000', value='75000', variable=selected_amount).place(x=640,y=15)
amount_radio6 = Radiobutton(amount_frame, text='100000', value='100000', variable=selected_amount).place(x=720,y=15)
amount_radio7 = Radiobutton(amount_frame, text='150000', value='150000', variable=selected_amount).place(x=805,y=15)
amount_radio8 = Radiobutton(amount_frame, text='200000', value='200000', variable=selected_amount).place(x=890,y=15)
amount_radio9 = Radiobutton(amount_frame, text='250000', value='250000', variable=selected_amount).place(x=980,y=15)
amount_radio10 = Radiobutton(amount_frame, text='300000', value='300000', variable=selected_amount).place(x=320,y=55)
amount_radio11 = Radiobutton(amount_frame, text='400000', value='400000', variable=selected_amount).place(x=400,y=55)
amount_radio12 = Radiobutton(amount_frame, text='500000', value='500000', variable=selected_amount).place(x=480,y=55)
amount_radio13 = Radiobutton(amount_frame, text='750000', value='750000', variable=selected_amount).place(x=560,y=55)
amount_radio14 = Radiobutton(amount_frame, text='Not Applicable', value='NA', variable=selected_amount).place(x=640, y=55)
custom_amount_text = Label(amount_frame, text='AMOUNT:     $').place(x=850, y=58)

custom_amount_entry = Entry(amount_frame, textvariable=selected_amount, width=15)
custom_amount_entry.place(x=930, y=58)

#****************************************************************************








root.mainloop() #keeps it continously going.

此文件名为setup.py

import cx_Freeze
import sys


base = None
if sys.platform =='win32':
    base = 'Win32GUI'
executables = [cx_Freeze.Executable("insurance_premiums.py", base=base, icon='shift_insurance.ico')] #1.what we execute  2.base of execution  3.anything else added on

cx_Freeze.setup(
    name="Shift Insurance Premiums Tool",
    options={"build_exe":{"packages":["tkinter","urllib.parse", "urllib.request", "xlsxwriter", "bs4", "time", "webbrowser"],"include_files":["shift insurance.gif", "shift_insurance.ico"]}},
    version='1.0',
    description="Shift Insurance tool for analyzing insurance premiums",
    executables = executables
)

有人可以帮忙!!?!?!?有特殊命令吗?

1 个答案:

答案 0 :(得分:0)

编辑:问题已经解决。简单的重新安装和上面的解决方案将起作用。还必须确保安装了MICROSOFT可视化工作室可重新分配的软件包(不知道为什么,但是一些没有msvs 2010的计算机无法使用该程序)