当前位置: 移动技术网 > IT编程>脚本编程>Python > python 实现一个图形界面的汇率计算器

python 实现一个图形界面的汇率计算器

2020年11月09日  | 移动技术网IT编程  | 我要评论
调用的api接口:https://api.exchangerate-api.com/v4/latest/usd完整代码import requestsfrom tkinter import *impor

调用的api接口:

https://api.exchangerate-api.com/v4/latest/usd

完整代码

import requests
from tkinter import *
import tkinter as tk
from tkinter import ttk


class realtimecurrencyconverter():
  def __init__(self,url):
      self.data = requests.get(url).json()
      self.currencies = self.data['rates']

  def convert(self, from_currency, to_currency, amount): 
    initial_amount = amount 
    if from_currency != 'usd' : 
      amount = amount / self.currencies[from_currency] 
 
    
    amount = round(amount * self.currencies[to_currency], 4) 
    return amount

class app(tk.tk):

  def __init__(self, converter):
    tk.tk.__init__(self)
    self.title = 'currency converter'
    self.currency_converter = converter

    
    self.geometry("500x200")
    
    
    self.intro_label = label(self, text = 'welcome to real time currency convertor', fg = 'blue', relief = tk.raised, borderwidth = 3)
    self.intro_label.config(font = ('courier',15,'bold'))

    self.date_label = label(self, text = f"1 indian rupee equals = {self.currency_converter.convert('inr','usd',1)} usd \n date : {self.currency_converter.data['date']}", relief = tk.groove, borderwidth = 5)

    self.intro_label.place(x = 10 , y = 5)
    self.date_label.place(x = 160, y= 50)

    
    valid = (self.register(self.restrictnumberonly), '%d', '%p')
    self.amount_field = entry(self,bd = 3, relief = tk.ridge, justify = tk.center,validate='key', validatecommand=valid)
    self.converted_amount_field_label = label(self, text = '', fg = 'black', bg = 'white', relief = tk.ridge, justify = tk.center, width = 17, borderwidth = 3)

    
    self.from_currency_variable = stringvar(self)
    self.from_currency_variable.set("inr") 
    self.to_currency_variable = stringvar(self)
    self.to_currency_variable.set("usd") 

    font = ("courier", 12, "bold")
    self.option_add('*tcombobox*listbox.font', font)
    self.from_currency_dropdown = ttk.combobox(self, textvariable=self.from_currency_variable,values=list(self.currency_converter.currencies.keys()), font = font, state = 'readonly', width = 12, justify = tk.center)
    self.to_currency_dropdown = ttk.combobox(self, textvariable=self.to_currency_variable,values=list(self.currency_converter.currencies.keys()), font = font, state = 'readonly', width = 12, justify = tk.center)

    
    self.from_currency_dropdown.place(x = 30, y= 120)
    self.amount_field.place(x = 36, y = 150)
    self.to_currency_dropdown.place(x = 340, y= 120)
    
    self.converted_amount_field_label.place(x = 346, y = 150)
    
    
    self.convert_button = button(self, text = "convert", fg = "black", command = self.perform) 
    self.convert_button.config(font=('courier', 10, 'bold'))
    self.convert_button.place(x = 225, y = 135)

  def perform(self):
    amount = float(self.amount_field.get())
    from_curr = self.from_currency_variable.get()
    to_curr = self.to_currency_variable.get()

    converted_amount = self.currency_converter.convert(from_curr,to_curr,amount)
    converted_amount = round(converted_amount, 2)

    self.converted_amount_field_label.config(text = str(converted_amount))
  
  def restrictnumberonly(self, action, string):
    regex = re.compile(r"[0-9,]*?(\.)?[0-9,]*$")
    result = regex.match(string)
    return (string == "" or (string.count('.') <= 1 and result is not none))

if __name__ == '__main__':
  url = 'https://api.exchangerate-api.com/v4/latest/usd'
  converter = realtimecurrencyconverter(url)

  app(converter)
  mainloop()

运行效果:

以上就是python 实现一个图形界面的汇率计算器的详细内容,更多关于python 汇率计算的资料请关注移动技术网其它相关文章!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网