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

📅  最后修改于: 2023-12-03 15:04:10.360000             🧑  作者: Mango

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

简介

这是一个基于Python的实时货币转换器,使用了Tkinter图形用户界面框架。它能够将不同货币之间的实时汇率进行计算,并在界面上显示结果。

运行环境
  • Python3.x
  • Tkinter
安装

无需安装任何库,运行脚本即可。如需在其他Python项目中使用,可以将脚本作为模块引用。

使用方法
  1. 运行脚本
python currency_converter.py
  1. 选择货币

默认货币为美元,可以通过下拉菜单选择其他货币。

  1. 输入金额

在右侧输入框中输入要转换的金额,然后点击“转换”按钮。

  1. 查看结果

计算结果将出现在屏幕上方。

截图

currency_converter_screenshot

代码片段
import tkinter as tk
import requests

class CurrencyConverter:

    rates = {}
    
    def __init__(self, url):
        data = requests.get(url).json()
        self.rates = data['rates']
   
    def convert(self, from_currency, to_currency, amount):
        initial_amount = amount
        if from_currency != 'USD':
            amount = amount / self.rates[from_currency]
        amount = round(amount * self.rates[to_currency], 2)
        return amount

class App:

    def __init__(self):
        self.converter = CurrencyConverter("https://api.exchangerate-api.com/v4/latest/USD")
        
        self.window = tk.Tk()
        self.window.title("Currency Converter")
        self.window.geometry("400x150")
        self.window.resizable(width=False, height=False)

        self.from_currency = tk.StringVar(self.window)
        self.from_currency.set("USD")
        self.to_currency = tk.StringVar(self.window)
        self.to_currency.set("EUR")
        self.amount = tk.DoubleVar(self.window)
        self.converted_amount = tk.StringVar()

        self.from_currency_label = tk.Label(self.window, text="从")
        self.from_currency_label.grid(column=0, row=0)
        self.to_currency_label = tk.Label(self.window, text="到")
        self.to_currency_label.grid(column=0, row=1)
        self.amount_label = tk.Label(self.window, text="金额")
        self.amount_label.grid(column=0, row=2)
        self.converted_amount_label = tk.Label(self.window, text="结果:")
        self.converted_amount_label.grid(column=0, row=3)

        self.from_currency_dropdown = tk.OptionMenu(self.window, self.from_currency, *self.converter.rates.keys())
        self.from_currency_dropdown.grid(column=1, row=0)
        self.to_currency_dropdown = tk.OptionMenu(self.window, self.to_currency, *self.converter.rates.keys())
        self.to_currency_dropdown.grid(column=1, row=1)

        self.amount_entry = tk.Entry(self.window, textvariable=self.amount, width=15)
        self.amount_entry.grid(column=1, row=2)

        self.convert_button = tk.Button(self.window, text="转换", command=self.convert)
        self.convert_button.grid(column=1, row=3)

        self.converted_amount_label = tk.Label(self.window, textvariable=self.converted_amount)
        self.converted_amount_label.grid(column=1, row=4)

        self.window.mainloop()

    def convert(self):
        from_currency = self.from_currency.get()
        to_currency = self.to_currency.get()
        amount = self.amount.get()
        converted_amount = self.converter.convert(from_currency, to_currency, amount)
        self.converted_amount.set(str(converted_amount))

if __name__ == '__main__':
    App()
简述

我们创建了一个名为CurrencyConverter的类,它具有向用户返回汇率、计算不同货币之间转换的功能。我们还创建了一个名为App的类,它是一个Tkinter应用程序,用于向用户呈现一个简单的图形用户界面,使其更加可操作和美观。我们使用了请求库来调用API以获取实时汇率。最后,我们定义了convert()方法以便在用户选择余额、货币种类以及点击转换按钮时进行转换。这个转换器支持所有可用的货币种类,并可以调整大小来适应各种使用情况。