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系 ...
随机推荐
- Java - extends
继承 一个类得到了另一个类当中的成员变量和成员函数. Java只支持单继承,一个父类可以有多个子类. 使用继承,可减少重复代码.把重复代码放入父类中.需要添加共同的成员变量或函数时可以直接操作父类. ...
- 常用PHP函数
md5_file() 生成md5 $zip = new \ZipArchive(); if($zip->open($savepath.$key) === TRUE){ $zip ->ext ...
- (转)AJax跨域:No 'Access-Control-Allow-Origin' header is present on the requested resource
在本地用ajax跨域访问请求时报错: No 'Access-Control-Allow-Origin' header is present on the requested resource. Ori ...
- springmvc精讲
转自http://www.cnblogs.com/baiduligang/p/4247164.html
- 对于mariadb安装后可以默认使用无密码登录的问题解决方案
mariadb安装后默认可以无密码登录 所以首先我们要设置root用户的密码 mysqladmin -u root -p password 密码 [遇到enter直接enter就行,注意,如果是重新设 ...
- Pivot Table系列之展开/折叠用法 (Expand/Collapse)
1.遇到的问题: PivotTable中本来已经展开的维度的Hierarchy(层次结构),在切换切片器的数据集时,层次结构就折叠在一起了:没有按照之前的方式展开显示. 2.在做成PivotTable ...
- hibernate 使用枚举字段的最佳实践
枚举类虽然很简单,但是却往往是系统中业务逻辑最集中最复杂的地方.本文将会分享我们项目中基于hibernate的枚举类使用规范,包含数据库中枚举列数据类型.注释.枚举列与枚举类的映射等. 一.枚举类定义 ...
- [PS相关]DAS,NAS,SAN三种存储技术比较
随着数据量一直在快速增长,存储技术也在快速的更新以满足需求和推动创新.当存储被提到的时候,它不仅仅局限于存储容量,还有其他的需求比如数据保护,数据备份,数据访问速度等等. NAS-网络存储设备(Net ...
- 电脑只能上QQ,不能上网浏览网站怎么解决
这个问题通常是因为网络的DNS解析出错引起的.QQ一类的聊天软件有自动的网络解析,不需要DNS便可以使用,而一般的浏览器是需要DNS解析来访问网页的.所谓DNS,即域名服务器(Domain Name ...
- docker安装方法(常见安装出错问题汇总)
参考资料: 1. 开源中国 http://www.oschina.net/translate/nstalling-dockerio-on-centos-64-64-bit?cmp Docker 是一 ...