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 相关文章推荐
Python脚本实现下载合并SAE日志
Feb 10 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
Python 实现链表实例代码
Apr 07 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
基于Python实现扑克牌面试题
Dec 11 Python
Pytorch之Variable的用法
Dec 31 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
linux 下selenium chrome使用详解
Apr 02 Python
超级实用的8个Python列表技巧
Aug 24 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
php实现微信扫码支付
2017/03/26 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
js 文本滚动效果的实例代码
2013/08/17 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
javascript实现连续赋值
2015/08/10 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
使用ECharts实现状态区间图
2018/10/25 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python3读取zip文件信息的方法
2015/05/22 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
浅谈Python处理PDF的方法
2017/11/10 Python
python DataFrame 取差集实例
2019/01/30 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
安全责任书范文
2014/03/12 职场文书
体育节口号
2014/06/19 职场文书
培根随笔读书笔记
2015/07/01 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
导游词之张家口
2019/12/13 职场文书
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS