Hi everyone,
I found a exchange rate calculator online built in tkinter and am trying to update it to reference my dataframe exchange rate variables. Does anyone know how I can do that?
Thanks
I found a exchange rate calculator online built in tkinter and am trying to update it to reference my dataframe exchange rate variables. Does anyone know how I can do that?
#Building a currency converter #list of currencies """ AUDUSD = 0.8371 CADUSD = 0.8711 USDCNY = 6.1715 EURUSD = 1.2315 GBPUSD = 1.5683 NZDUSD = 0.7750 USDJPY = 119.95 EURCZK = 27.6028 EURDKK = 7.4405 EURNOK = 8.6651 """ #load currencies into a dataframe for input statement to lookup import pandas as pd data = {'AUD': [1, 0.8711/0.8371, (1/6.1715)/0.8371, (1.2315/27.6028)/0.8371, (1.2315/7.4405)/0.8371, 1.2315/0.8371, 1.5683/0.8371, (1/119.95)/0.8371, (1.2315/8.6651)/0.8371, 0.7750/0.8371, 1/0.8371], 'CAD': [0.8371/0.8711, 1, (1/6.1715)/0.8711, (1.2315/27.6028)/0.8711, (1.2315/7.4405)/0.8711, 1.2315/0.8711, 1.5683/0.8711, (1/119.95)/0.8711, (1.2315/8.6651)/0.8711, 0.7750/0.8711, 1/0.8711], 'CNY': [0.8371/(1/6.1715), 0.8711/(1/6.1715), 1, (1.2315/27.6028)/(1/6.1715), (1.2315/7.4405)/(1/6.1715), 1.2315/(1/6.1715), 1.5683/(1/6.1715), (1/119.95)/(1/6.1715), (1.2315/8.6651)/(1/6.1715), 0.7750/(1/6.1715), 1/(1/6.1715)], 'CZK': [0.8371/(1.2315/27.6028), 0.8711/(1.2315/27.6028), (1/6.1715)/(1.2315/27.6028), 1, (1.2315/7.4405)/(1.2315/27.6028), (1/1.2315)/27.6028, 1.5683/(1.2315/27.6028), (1/119.95)/(1.2315/27.6028), (1.2315/8.6651)/(1.2315/27.6028), 0.7750/(1.2315/27.6028), 1/(1.2315/27.6028)], 'DKK': [0.8371/(1.2315/7.4405), 0.8711/(1.2315/7.4405), (1/6.1715)/(1.2315/7.4405), (1.2315/27.6028)/(1.2315/7.4405), 1, 1/(1.2315/7.4405), 1.5683/(1.2315/7.4405), (1/119.95)/(1.2315/7.4405), (1.2315/8.6651)/(1.2315/7.4405), 0.7750/(1.2315/7.4405), 1/(1.2315/7.4405)], 'EUR': [0.8371/1.2315, 0.8711/1.2315, (1/6.1715)/1.2315, 1/27.6028, 1/7.4405, 1, 1.5683/1.2315, (1/119.95)/1.2315, 8.6651, 0.7750/1.2315, 1/1.2315], 'GBP': [0.8371/1.5683, 0.8711/1.5683, (1/6.1715)/1.5683, (1.2315/27.6028)/1.5683, (1.2315/7.4405)/1.5683, 1.2315/1.5683, 1, (1/119.95)/1.5683, (1.2315/8.6651)/1.5683, 0.7750/1.5683, 1/1.5683], 'JPY': [0.8371/(1/119.95), 0.8711/(1/119.95), (1/6.1715)/(1/119.95), (1.2315/27.6028)/(1/119.95), (1.2315/7.4405)/(1/119.95), 1.2315/(1/119.95), 1.5683/(1/119.95), 1, (1.2315/8.6651)/(1/119.95), 0.7750/(1/119.95), 119.95], 'NOK': [0.8371/(1.2315/8.6651), 0.8711/(1.2315/8.6651), (1/6.1715)/(1.2315/8.6651), (1.2315/27.6028)/(1.2315/8.6651), (1.2315/7.4405)/(1.2315/8.6651), 1.2315/(1.2315/8.6651), 1.5683/(1.2315/8.6651), (1/119.95)/(1.2315/8.6651), 1, 0.7750/(1.2315/8.6651), 1/(1.2315/8.6651)], 'NZD': [0.8371/0.7750, 0.8711/0.7750, (1/6.1715)/0.7750, (1.2315/27.6028)/0.7750,(1.2315/7.4405)/0.7750,1.2315/0.7750,1.5683/0.7750,(1/119.95)/0.7750,(1.2315/8.6651)/0.7750,1, 1/0.7750], 'USD': [0.8371, 0.8711, (1/6.1715), 1.2315/27.6028, 1.2315/7.4405, 1.2315, 1.5683, 1/119.95, 1.2315/8.6651, 0.7750, 1] } df = pd.DataFrame(data, index=['AUD','CAD','CNY','CZK','DKK','EUR','GBP','JPY','NOK','NZD','USD']) df = df.round(decimals=4) df from tkinter import * import requests, json # Create a GUI window root = Tk() #create and initialise variables variable1 = StringVar(root) variable2 = StringVar(root) variable1.set("currency") variable2.set("currency") #Function to preform currency conversion def CurrencyConversion(): #Currency code from_currency = variable1.get() to_currency = variable2.get() #store dataframe rates rates = df # main_rates variable store complete url main_rates = rates + "&from_currency =" + from_currency + "&to_currency =" + to_currency # get method of requests module # return response object req_ob = requests.get(main_rates) # json method return json format # data into python dictionary data type. # result contains list of nested dictionaries result = req_ob.json() Exchange_Rate = float(result["Exchange rate"] ['5. Exchange']) # get method of Entry widget # returns current text as a # string from text entry box. amount = float(Amount1_field.get()) # calculation for the conversion new_amount = round(amount * Exchange_Rate, 2) # insert method inserting the # value in the text entry box. Amount2_field.insert(0, str(new_amount)) # function for clearing entry field def clear_all(): Amount1_field.delete(0, END) Amount2_field.delete(0, END) #setup interface for calculator if __name__ == "__main__" : # Set the background colour of GUI window root.configure(background = 'light green') # Set the configuration of GUI window (WidthxHeight) root.geometry("400x175") # Create Currency Convertor label headlabel = Label(root, text = 'Currency Convertor', fg = 'black', bg = "red") # Create a "Amount :" label label1 = Label(root, text = "Amount :", fg = 'black', bg = 'dark green') # Create a "From Currency :" label label2 = Label(root, text = "From Currency", fg = 'black', bg = 'dark green') # Create a "To Currency: " label label3 = Label(root, text = "To Currency :", fg = 'black', bg = 'dark green') # Create a "Converted Amount :" label label4 = Label(root, text = "Converted Amount :", fg = 'black', bg = 'dark green') # grid method is used for placing # the widgets at respective positions # in table like structure. headlabel.grid(row = 0, column = 1) label1.grid(row = 1, column = 0) label2.grid(row = 2, column = 0) label3.grid(row = 3, column = 0) label4.grid(row = 5, column = 0) # Create a text entry box # for filling or typing the information. Amount1_field = Entry(root) Amount2_field = Entry(root) # ipadx keyword argument set width of entry. Amount1_field.grid(row = 1, column = 1, ipadx ="25") Amount2_field.grid(row = 5, column = 1, ipadx ="25") # list of currency codes CurrencyCode_list = ["AUD", "CAD", "CNY", "CZK", "DKK", "EUR", "GBP", "JPY", "NOK", "NZD", "USD"] #update # create a drop down menu using OptionMenu function # which takes window name, variable and choices as # an argument. use * before the name of the list, # to unpack the values FromCurrency_option = OptionMenu(root, variable1, *CurrencyCode_list) ToCurrency_option = OptionMenu(root, variable2, *CurrencyCode_list) FromCurrency_option.grid(row = 2, columns = 1, ipadx = 10) ToCurrency_option.grid(row = 3, columns = 1, ipadx = 10) # Create a Convert Button and attached # with CurrencyExchangeRate function button1 = Button(root, text = "Convert", bg = 'blue', fg = 'black', command = CurrencyConversion) button1.grid(row = 4, column = 1) # Create a Clear Button and attached # with delete function button2 = Button(root, text = "Clear", bg = "red", fg = "black", command = clear_all) button2.grid(row = 6, column = 1) # Start the GUI root.mainloop()Any help is appreciated.
Thanks