PyQt5实时汇率查询
用PyQt5实现了界面,使用urllib实时抓取ip138.com网站的汇率信息。
import sys
import urllib
import urllib.request
from PyQt5.QtWidgets import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.getdata()
comboItems = list(self.rates.keys())
textLabel = QLabel('实时汇率查询换算')
self.fromComboBox = QComboBox()
self.fromComboBox.addItems(comboItems)
self.fromSpinBox = QDoubleSpinBox()
self.fromSpinBox.setRange(0.01, 10000000.00)
self.fromSpinBox.setValue(100)
self.toComboBox = QComboBox()
self.toComboBox.addItems(comboItems)
self.toLabel = QLabel('1.00')
grid = QGridLayout()
grid.addWidget(textLabel, 0, 0)
grid.addWidget(self.fromComboBox, 1, 0)
grid.addWidget(self.fromSpinBox, 1, 1)
grid.addWidget(self.toComboBox, 2, 0)
grid.addWidget(self.toLabel, 2, 1)
self.setLayout(grid)
self.updateUi()
self.fromComboBox.currentIndexChanged.connect(self.updateUi)
self.toComboBox.currentIndexChanged.connect(self.updateUi)
self.fromSpinBox.valueChanged.connect(self.updateUi)
self.setWindowTitle('汇率 @author : likui')
def updateUi(self):
from_value = self.rates[self.fromComboBox.currentText()]
to_value = self.rates[self.toComboBox.currentText()]
money = self.fromSpinBox.value()
url = 'http://qq.ip138.com/hl.asp?from=%s&to=%s&q=%s' % (
from_value, to_value, money)
html = self.urlopen(url)
table_start = html.find('<table')
count = 5
td_begin = html.find('<td')
while count:
count -= 1
td_begin = html.find('<td', td_begin + 1)
temp = td_begin
td_end = html.find('</td>', td_begin)
amount = float(html[td_begin + 4:td_end])
self.toLabel.setText('%0.2f' % amount)
def getdata(self):
self.rates = {}
url = 'http://qq.ip138.com/hl.asp'
html = self.urlopen(url)
td_begin = html.find('<td>')
td_end = html.find('</td>', td_begin)
resource = html[td_begin:td_end]
begin = resource.find('<optgroup')
end = resource.find('</optgroup>')
option_begin = resource.find('<option', begin)
while option_begin != -1:
value = resource[option_begin + 14:option_begin + 17]
value_begin = resource.find('>', option_begin)
value_end = resource.find('<', value_begin)
rate = resource[value_begin + 1:value_end]
self.rates[rate] = value
option_begin = resource.find('<option', value_end)
if option_begin > end:
break
def urlopen(self, url):
ret = urllib.request.Request(url)
ret.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/41.0.2272.101 Safari/537.36')
html = urllib.request.urlopen(ret).read().decode('GB2312')
return html
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()PyQt5实时汇率查询的更多相关文章
- Pyqt5 实时图像滚动
实时图像 写了一个关于实时图像滚动显示的例子,做个记录. 滚动算法: 难点: 将内存数据绘制到界面,需要用到QImage和QPixmap,使用QImage转换一下,具体参见代码.这个费了好大劲才弄出来 ...
- 生活常用类API调用的代码示例合集:邮编查询、今日热门新闻查询、区号查询等
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 邮编查询:通过邮编查询地名:通过地名查询邮编 今日热门新闻查询:提 ...
- 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)
目录 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) 翻译软件上传到github上. 软件截图 主要的思想 界面方面 程序方面 制作属于自己的翻译软件(基于PyQt5+Python+ ...
- PyQt5播放实时视频流或本地视频文件
目录 编辑UI 新建视频播放类Display 打开相机 关闭相机 显示视频画面 完整源代码 效果图 编辑UI 编辑UI如下图所示: 新建视频播放类Display 定义如下初始化函数 def __ini ...
- pyQt5不让进度条卡住
这里我们用一个更新程序做示例, 下载文件的过程中让进度条实时显示下载进度. 如果下载和更新进度条的工作都放在一个线程中,会出现进度条卡顿的情况. Qt中正确的做法是把界面刷新和工作任务交给不同的线程去 ...
- pyqt5 graphics view简单使用
Graphics View提供了一个平面,用于管理和交互大量自定义的2D图形图元,以及一个用于可视化图元的视图窗口小部件,支持缩放和旋转. 该框架包括一个事件传播架构,允许场景中图元的精确双精度交互功 ...
- pyqt5的使用目录
pyqt5的安装 我的第一个例子 标签控件QLabel的使用 按钮QPushButton 信号与槽 pyqt5模块介绍 pycharm活动模板 QObject 定时器 QWidget类-坐标系 ...
- 基于pyQt5开发的股价显示器(原创)
#/usr/bin/env python # -*- coding: utf-8 -*- ''' @author="livermorium116" 为了绕开公司内网而开发的 股票实 ...
- linux下Python2.7编译安装PyQt5
---作者吴疆,未经允许,严禁转载,违权必究--- ---欢迎指正,需要源码和文件可站内私信联系--- -----------点击此处链接至博客园原文----------- 功能说明:在ubuntu系 ...
随机推荐
- xdu_1077:循环节长度
题意很简单,就是给出p,q,求p/q的循环节长度. 由循环小数的循环部分的值等于等比数列求和的值S,列公式得到最简分数分母的值.最终得10^x%q==1(其中q为经过modify之后的值).搞清这些之 ...
- Work 1(导游类)(2017.06.27)
- java数组排序(冒泡、直排)反转
package lianxi; public class maopao { public static void main(String[] args){ int[] i=new int[]{45,6 ...
- HTML中重要的知识点,表单
今天跟大家分享一下有关HTML中比较重要的一个知识点-表单: <form></form>表单 这是一个双标签,form表单有两个必须要有的属性,①action就是指表单传递到的 ...
- 【canvas学习笔记二】绘制图形
上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...
- Linux安装搜狗输入法教程
最近开始学习linux 在安装输入法中遇到的一些问题,最终成功安装,也得益于网络上的前辈写的文章,现在将全部安装步骤以及遇到的一些问题总结如下: 基本上分三步走 1,添加fcitx的键盘输入法系统 ...
- post提交数据长度限制问题
最近做手机拍照照片上传时,由于图片较大,base64后字符串长度太长,所以提交失败. 修改Tomcat服务器的maxPostSize=0,解决完成! <Connector connectionT ...
- JavaScript基本数据类型
JavaScript基本数据类型 在JavaScript种一共有6种数据类型:Null.Undefined.Boolean.String.Number.Object.其中Object是一种复杂数据类型 ...
- node 内存管理相关
为什么在node中要担心node内存管理 使用JavaScript进行前端开发时几乎完全不需要关心内存管理问题,对于前端编程来说,V8限制的内存几乎不会出现用完的情况,v8在node中有着内存的限制( ...
- RabbitMQ安装以及java使用(一)
最近闲来无事,整理下基础知识,本次安装 1.RabbitMQ版本是3.6.10 2.操作系统是centOS 7 64位 虚拟机IP:192.168.149.133 1.安装更新系统环境依赖 yum ...