📜  Python|使用 Tkinter 的实时货币转换器

📅  最后修改于: 2022-05-13 01:54:24.379000             🧑  作者: Mango

Python|使用 Tkinter 的实时货币转换器

先决条件: tkinter 简介 |获取实时货币汇率
Python为开发 GUI(图形用户界面)提供了多种选择。在所有的 GUI 方法中,tkinter 是最常用的方法。它是Python随附的 Tk GUI 工具包的标准Python接口。带有 tkinter 的Python输出创建 GUI 应用程序的最快和最简单的方法。

创建一个 tkinter :

  • 导入模块 – tkinter
  • 创建主窗口(容器)
  • 将任意数量的小部件添加到主窗口。
  • 在小部件上应用事件触发器。

让我们创建一个基于 GUI 的简单实时货币转换器(使用 Alpha Vantage API),它可以将金额从一种货币转换为另一种货币。

所需模块:

tkinter
requests
json

下面是实现:

Python3
# import all functions from the tkinter
from tkinter import *
 
# Create a GUI window
root = Tk()
 
# create a global variables
variable1 = StringVar(root)
variable2 = StringVar(root)
 
# initialise the variables
variable1.set("currency")
variable2.set("currency")
 
     
# Function to perform real time conversion
# from one currency to another currency
def RealTimeCurrencyConversion():
 
    # importing required libraries
    import requests, json
 
    # currency code
    from_currency = variable1.get()
    to_currency = variable2.get()
 
    # enter your api key here
    api_key = "Your_Api_Key"
     
    # base_url variable store base url
    base_url = r"https://www.alphavantage.co/query?function = CURRENCY_EXCHANGE_RATE"
 
    # main_url variable store complete url
    main_url = base_url + "&from_currency =" + from_currency +
        "&to_currency =" + to_currency + "&apikey =" + api_key
 
    # get method of requests module
    # return response object
    req_ob = requests.get(main_url)
 
    # json method return json format
    # data into python dictionary data type.
     
    # result contains list of nested dictionaries
    result = req_ob.json()
 
    # parsing the required information
    Exchange_Rate = float(result["Realtime Currency Exchange Rate"]
                                              ['5. Exchange Rate'])
 
    # get method of Entry widget
    # returns current text  as a
    # string from text entry box.
    amount = float(Amount1_field.get())
 
    # calculation for the conversion
    new_amount = round(amount * Exchange_Rate, 3)
 
    # insert method inserting the
    # value in the text entry box.
    Amount2_field.insert(0, str(new_amount))
 
 
# Function for clearing the Entry field
def clear_all() :
    Amount1_field.delete(0, END)
    Amount2_field.delete(0, END)
    
 
# Driver code
if __name__ == "__main__" :
 
    # Set the background colour of GUI window
    root.configure(background = 'light green')
   
    # Set the configuration of GUI window (WidthxHeight)
    root.geometry("400x175")
   
    # Create welcome to Real Time Currency Convertor label
    headlabel = Label(root, text = 'welcome to Real Time Currency Convertor',
                      fg = 'black', bg = "red")
 
    # Create a "Amount :" label
    label1 = Label(root, text = "Amount :",
                 fg = 'black', bg = 'dark green')
     
    # Create a "From Currency :" label
    label2 = Label(root, text = "From Currency",
                   fg = 'black', bg = 'dark green')
   
    # Create a "To Currency: " label
    label3 = Label(root, text = "To Currency :",
                   fg = 'black', bg = 'dark green')
 
    # Create a "Converted Amount :" label
    label4 = Label(root, text = "Converted Amount :",
                   fg = 'black', bg = 'dark green')
 
    # grid method is used for placing
    # the widgets at respective positions
    # in table like structure . 
    headlabel.grid(row = 0, column = 1)
    label1.grid(row = 1, column = 0)
    label2.grid(row = 2, column = 0)
    label3.grid(row = 3, column = 0)
    label4.grid(row = 5, column = 0)
     
    # Create a text entry box
    # for filling or typing the information.
    Amount1_field = Entry(root)
    Amount2_field = Entry(root)
      
    # ipadx keyword argument set width of entry space.
    Amount1_field.grid(row = 1, column = 1, ipadx ="25")
    Amount2_field.grid(row = 5, column = 1, ipadx ="25")
 
    # list of currency codes
    CurrenyCode_list = ["INR", "USD", "CAD", "CNY", "DKK", "EUR"]
 
    # create a drop down menu using OptionMenu function
    # which takes window name, variable and choices as
    # an argument. use * before the name of the list,
    # to unpack the values
    FromCurrency_option = OptionMenu(root, variable1, *CurrenyCode_list)
    ToCurrency_option = OptionMenu(root, variable2, *CurrenyCode_list)
     
    FromCurrency_option.grid(row = 2, column = 1, ipadx = 10)
    ToCurrency_option.grid(row = 3, column = 1, ipadx = 10)
     
    # Create a Convert Button and attached
    # with RealTimeCurrencyExchangeRate function
    button1 = Button(root, text = "Convert", bg = "red", fg = "black",
                                command = RealTimeCurrencyConversion)
     
    button1.grid(row = 4, column = 1)
 
    # Create a Clear Button and attached
    # with delete function
    button2 = Button(root, text = "Clear", bg = "red",
                     fg = "black", command = clear_all)
    button2.grid(row = 6, column = 1)
   
    # Start the GUI
    root.mainloop()


输出 :

输出1

输出2