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


Posted in Python onNovember 09, 2020

调用的api接口:

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

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

完整代码

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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
python基础教程之基本数据类型和变量声明介绍
Aug 29 Python
Python中asyncore的用法实例
Sep 29 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
谈谈python中GUI的选择
Mar 01 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
Django 5种类型Session使用方法解析
Apr 29 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
Scrapy框架介绍之Puppeteer渲染的使用
Jun 19 Python
浅析Python 条件控制语句
Jul 15 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 Python
python 实现aes256加密
Nov 27 Python
python 读取串口数据的示例
Nov 09 #Python
Cpython解释器中的GIL全局解释器锁
Nov 09 #Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 #Python
基于python爬取梨视频实现过程解析
Nov 09 #Python
Python eval函数介绍及用法
Nov 09 #Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 #Python
python 用struct模块解决黏包问题
Nov 07 #Python
You might like
php类
2006/11/27 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
pymssql ntext字段调用问题解决方法
2008/12/17 Python
python封装对象实现时间效果
2020/04/23 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
浅析python协程相关概念
2018/01/20 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
个人自我鉴定怎么写
2013/10/28 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
2014年师德承诺书
2014/05/23 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技