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

@johnyrockquid

Here it is:
When the program starts

Collapse
 
swapanroy profile image
Swapan

Glad you liked it :)

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