Fill up all the major world currencies and digital currencies

Our Own Score

Hello and welcome back to this new currency exchange project. After we have created the currency exchange application in the previous chapter, we will fill up all the major world currency pairs as well as the top 10 digital currency pairs to the base and the quote currency’s combo box. There are not many changes in this revised version of the application, we just include more currency pairs into the combo boxes.

import json
from tkinter import *
import tkinter.ttk as tk
from alpha_vantage.foreignexchange import ForeignExchange

win = Tk() # Create tk instance
win.title("Real Forex") # Add a title
win.resizable(0, 0) # Disable resizing the GUI
win.configure(background='white') # change window background color

selectorFrame = Frame(win, background="white") # create top frame to hold base and quote currency combobox
selectorFrame.pack(anchor = "nw", pady = 2, padx=10)
currency_label = Label(selectorFrame, text = "Select base currency / quote currency :", background="white")
currency_label.pack(anchor="w") # the currency pair label

curr1 = tuple() # the tuple which will be populated by base and quote currency
currency_list = ['AUD', 'BCH', 'BNB', 'BND', 'BTC', 'CAD', 'CHF', 'CNY', 'EOS', 'EUR', 'ETH', 'GBP', 'JPY', 'LTC', 'NZD', 'MYR', 'TRX', 'USD', 'USDT', 'XLM', 'XRP'] # major world currency pairs

# populate the combo box for both the base and quote currency
for key in currency_list:
    curr1 += (key, )

# Create a combo box for base currency
base_currency = StringVar() # create a string variable
based = tk.Combobox(selectorFrame, textvariable=base_currency)
based['values'] = curr1
based.pack(side = LEFT, padx=3)

# Create a combo box for quote currency
quote_currency = StringVar() # create a string variable
quote = tk.Combobox(selectorFrame, textvariable=quote_currency)
quote['values'] = curr1
quote.pack(side = LEFT, padx=3)

s = StringVar() # create string variable which will be used to fill up the Forex data
# create currency frame and text widget to display the incoming forex data
currencyFrame = Frame(win)
currency = Label(currencyFrame)
text_widget = Text(currency, fg='white', background='black')
s.set("Click the find button to find out the currency exchange rate")
text_widget.insert(END, s.get())

buttonFrame = Frame(win) # create a bottom frame to hold the find button
buttonFrame.pack(side = BOTTOM, fill=X, pady = 6)

def get_exchange_rate(): # this method will display the incoming forex data after the api called
    # first get the api key and secret from the file
    f = open("alpha.txt", "r")
    api_key = f.readline()

    api_key = api_key.replace('\n', '')

        cc = ForeignExchange(key= api_key)
        from_ = based.get()
        to_ = quote.get()

        if(from_ != '' and to_ != '' and from_ != to_):
            data, _ = cc.get_currency_exchange_rate(from_currency=from_, to_currency=to_)
            exchange_rate = dict(json.loads(json.dumps(data)))
            count = 1
            sell_buy = str(count) + ".) Pair : " + exchange_rate['1. From_Currency Code'] + "(" + exchange_rate['2. From_Currency Name'] + ")" + " / " + exchange_rate['3. To_Currency Code']+"(" + exchange_rate['4. To_Currency Name'] + ") : "  + str(exchange_rate['5. Exchange Rate']) + '\n'
            text_widget.delete('1.0', END)  # clear all those previous text first
            text_widget.insert(INSERT, s.get())  # display forex rate in text widget

        print("An exception occurred")

action_vid = tk.Button(buttonFrame, text="Find", command=get_exchange_rate) # button used to find out the exchange rate of currency pair


If you have missed out the API setup process for this project please visit the previous post to find out more about it. We will further modify this program in the next chapter.

If you run the above program you will get the below outcome.


Leave a Reply

Notify of