DEV Community

loading...
Cover image for Currency Converter with Python

Currency Converter with Python

swapanroy profile image Swapan Roy Updated on ・2 min read

With COVID surging, enjoying the weekend with outdoor recreation has become a challenge. Last weekend, my better half was converting USD into multiple currencies.

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.

Reach me on my Twitter

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

Discussion (2)

Collapse
pvpzonevc profile image
pvpzonevc

Quite an interesting one I must admit. I thought about creating a forex calculator the same way. And you gave me some clues so now it should be much easier. Such useful tools are really interesting to build and use further because you can just add all the features that you want if you can handle it.

Collapse
swapanroy profile image
Swapan Roy Author

Glad you liked it :)

Forem Open with the Forem app