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批量按比例缩小图片脚本分享
May 21 Python
Python读写配置文件的方法
Jun 03 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
Django中使用MySQL5.5的教程
Dec 18 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 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 array的学习笔记
2012/05/10 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python利用正则表达式搜索单词示例代码
2017/09/24 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python hmac模块使用实例解析
2019/12/24 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
校三好学生主要事迹
2014/01/11 职场文书
公证委托书模板
2014/04/03 职场文书
运动员加油词
2015/07/18 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS