DEV Community

Cover image for Currency Converter with Python
Swapan
Swapan

Posted on • Edited on

Currency Converter with Python

With COVID surging, enjoying the weekend with outdoor recreation has become a challenge. Last weekend, my better half was converting USD into multiple currencies so i created the below program to assist her.

Concept:

  1. Create a space for user input ( in our case USD is the base currency that needs to be converted into other currencies)
  2. Use API to fetch data and parse it.
  3. 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

Final Output

When the program starts

When user inputs numeric value and convert button is hit

Code Snippet

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']) 
Enter fullscreen mode Exit fullscreen mode

Functions

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) 
Enter fullscreen mode Exit fullscreen mode

Code in Github.

Update:
Based on the demand Bitcoin has been added

Updated widget with Bitcoin tracker

Reach me on my Twitter

Note: Thanks to John McArthur for this photo via @unsplash 🎁

Other item to look into:

Top comments (3)

Collapse
 
amedalen profile image
Aj

Thank you for this wonderful post it was really inspiring, it inspired me so I created a currency converter but with Rust.

dev.to/amedalen/currency-converter...

Thank you so much.

Collapse
 
swapanroy profile image
Swapan

Glad you liked it :)

Collapse
 
swapanroy profile image
Swapan

@johnyrockquid

Here it is:
When the program starts

Some comments may only be visible to logged-in visitors. Sign in to view all comments.