"""代码来自Rapid GUI with PyQt4,时间变了,很多东西的变化,调试好累"""
__author__ = ‘dd‘
import sys
import urllib.request # 注意python3.3 的urllib格式变化。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
date = self.getdata()
rates = sorted(self.rates.keys())
dateLabel = QLabel(date)
self.fromComboBox = QComboBox()
self.fromComboBox.addItems(rates)
self.fromSpinBox = QDoubleSpinBox()
self.fromSpinBox.setRange(0.01, 10000000.00)
self.fromSpinBox.setValue(1.00)
self.toComboBox = QComboBox()
self.toComboBox.addItems(rates)
self.toLabel = QLabel("1.00")
grid = QGridLayout() # 网格式布局
grid.addWidget(dateLabel, 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.connect(self.fromComboBox, SIGNAL("currentIndexChanged(int)"), self.updateUi)
self.connect(self.toComboBox, SIGNAL("currentIndexChanged(int)"), self.updateUi)
self.connect(self.fromSpinBox, SIGNAL("valueChanged(double)"), self.updateUi)
self.setWindowTitle("Currency")
def updateUi(self):
to = self.toComboBox.currentText()
from_ = self.fromComboBox.currentText()
amount = (self.rates[from_] / self.rates[to] * self.fromSpinBox.value())
self.toLabel.setText("%0.2f" % amount)
def getdata(self):
self.rates = {}
try:
date = "Unknown"
fh = open("./day.csv", ‘r‘) # 国外数据不易获得,而且网络资源也改名了,下载为本地文件
# fh = urllib.request.urlopen("http://www.bankofcanaca.ca""/stats/assets/csv/fx-seven-day.csv")
# print(fh.read())
for line in fh:
if not line or line.startswith(("#", "Closing ")): # 去掉空行和注释行。
continue
fields = line.split(",")
if line.startswith("Date"):
date = fields[-1]
# print(date)
else:
try:
value = float(fields[-1]) # 最后一列为最新数字
self.rates[fields[0]] = value #第一列是国家名,建立以国名的字典
except ValueError:
pass
return "Exchange Rates Date: " + date
except Exception as e: # python3.3 错误处理,加了as
return "Failed to download:\n %s" % e
# except:print("Internet Error ")
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
汇率计算器的代码,布布扣,bubuko.com
汇率计算器的代码
原文:http://blog.csdn.net/python2014/article/details/21782575