With COVID surging, enjoying the weekend with outdoor recreation has become a challenge. Last weekend, my better half was converting USD into multiple currencies.
- Create a space for user input ( in our case USD is the base currency that needs to be converted into other currencies)
- Use API to fetch data and parse it.
- Present the data on the UI screen.
Below is the process that I followed
• Using Python 3.9 (Latest version) -download here
• Use tkinter library for UI (pip install tkinter )
• Use request library to pull data via API
• Create buttons like “Convert” to fetch data and Clear to erase the content
Laying out the labels on the tkinter grid. # Create a Label widget with "USD" as label l0 =Label(window,text="USD") l0.grid(row=0,column=0) # The Label is placed in position 0, 0 in the window l1 = Label(window,text="INR") l1.grid(row=1,column=0) # The Label is placed in position 1, 0 in the window l2 = Label(window,text="GBP") l2.grid(row=1,column=1) # The Label is placed in position 1, 1 in the window …… e2 = Entry(window,textvariable=e2_value) # Create an Entry box for users to enter the value e2.grid(row=0,column=1) # Create a button widget # The from_currency() function is called when the button is pushed b1 = Button(window,text="Convert",command=from_currency) b1.grid(row=0,column=2) # The delete function is called when the button is pushed b2 = Button(window,text="Clear",command=delete) b2.grid(row=0,column=3) # Create four empty text boxes, t1, t2, t3 and t4 for values to show up t1 = Text(window,height=1,width=20) t1.grid(row=2,column=0) Fetch Data via URL # Where USD is the base currency you want to use url = 'https://v6.exchangerate-api.com/v6/KEY/latest/USD/' # Making our request response = requests.get(url) data = response.json() # Your JSON object print(data['conversion_rates']['USD'])
def from_currency(): # Get user value from input box and multiply by today's conversion rate to get INR and round it to 2 decimals rupees = round(float(e2_value.get()) * data['conversion_rates']['INR'],2) # Get user value from input box and multiply by today's conversion rate to get GBP pound = round(float(e2_value.get())*data['conversion_rates']['GBP'],2) ……. Empty the Text boxes if they had text from the previous use and fill them again t1.delete("1.0", END) # Deletes the content of the Text box from start to END …… def delete(): # Deletes content from t1 Text box t1.delete("1.0", END) # Deletes content from t2 Text box t2.delete("1.0", END)
Code in Github.
Reach me on my Twitter
Note: Thanks to John McArthur for this photo via @unsplash 🎁