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

 更新时间:2020年11月09日 11:40:07   投稿:yxs  
这篇文章主要介绍了python 实现一个图形界面的汇率计算器,帮助大家更好的理解和学习如何制作gui程序,感兴趣的朋友可以了解下

调用的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 汇率计算的资料请关注脚本之家其它相关文章!

相关文章

  • 聊聊python中的异常嵌套

    聊聊python中的异常嵌套

    这篇文章主要介绍了python中的异常嵌套的相关资料,帮助大家更好的理解和学习python 异常的相关知识,感兴趣的朋友可以了解下
    2020-09-09
  • python实现复制大量文件功能

    python实现复制大量文件功能

    这篇文章主要为大家详细介绍了python实现复制大量文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python虚拟环境venv实战过程详解

    Python虚拟环境venv实战过程详解

    Python的虚拟环境可以帮助我们在同一台机器上,同时使用不同的Python版本和库,方便管理和开发,下面这篇文章主要给大家介绍了关于Python虚拟环境venv的相关资料,需要的朋友可以参考下
    2023-06-06
  • python 对字典按照value进行排序的方法

    python 对字典按照value进行排序的方法

    这篇文章主要介绍了python 对字典按照value进行排序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 整理Python 常用string函数(收藏)

    整理Python 常用string函数(收藏)

    这篇文章主要介绍了整理Python 常用string函数(收藏)的相关资料,具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • python使用KNN算法手写体识别

    python使用KNN算法手写体识别

    这篇文章主要为大家详细介绍了python使用KNN算法手写体识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Python实现清理重复文件功能的示例代码

    Python实现清理重复文件功能的示例代码

    在电脑上或多或少的存在一些重复文件,体积小的倒没什么,如果体积大的就很占内存了。本文用python制作了一个删除重复文件的小工具,核心代码很简单,希望对你有所帮助
    2022-07-07
  • 如何运行带参数的python脚本

    如何运行带参数的python脚本

    这篇文章主要介绍了如何运行带参数的python脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • pycharm设置注释颜色的方法

    pycharm设置注释颜色的方法

    今天小编就为大家分享一篇pycharm设置注释颜色的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 简单上手Python中装饰器的使用

    简单上手Python中装饰器的使用

    这篇文章主要介绍了Python中装饰器的使用,是Python进阶学习中的重要知识,需要的朋友可以参考下
    2015-07-07

最新评论