Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import codecs
- import csv
- import sys
- import urllib.request
- from PySide.QtCore import Slot
- from PySide.QtGui import *
- app = QApplication(sys.argv)
- win = QWidget()
- win.setWindowTitle('Test Window')
- @Slot()
- def update_ui():
- to = toComboBox.currentText()
- from_ = fromComboBox.currentText()
- amount = (rates[from_] / rates[to]) * fromSpinBox.value()
- toLabel.setText("%0.2f" % amount)
- def get_rates():
- d = "Unknown"
- url_string = "http://www.bankofcanada.ca/en/markets/csv/exchange_eng.csv"
- raw_file = urllib.request.urlopen(url_string)
- decoded_file = codecs.getreader("utf-8")(raw_file)
- rows = csv.reader(decoded_file)
- for row in rows:
- if not row or row[0].startswith("#"):
- continue
- if row[0].startswith("Date "):
- d = row[-1]
- else:
- try:
- value = float(row[-1])
- rates[row[0]] = value
- except ValueError:
- pass
- return "Exchange rates date: " + d
- rates = {}
- date = get_rates()
- dateLabel = QLabel(date)
- fromComboBox = QComboBox()
- fromComboBox.addItems(sorted(rates.keys()))
- fromSpinBox = QDoubleSpinBox()
- fromSpinBox.setRange(0.01, 100000000.00)
- fromSpinBox.setValue(1.00)
- toComboBox = QComboBox()
- toComboBox.addItems(sorted(rates.keys()))
- toLabel = QLabel("1.00")
- grid = QGridLayout()
- grid.addWidget(dateLabel, 0, 0)
- grid.addWidget(fromComboBox, 1, 0)
- grid.addWidget(fromSpinBox, 1, 1)
- grid.addWidget(toComboBox, 2, 0)
- grid.addWidget(toLabel, 2, 1)
- win.setLayout(grid)
- fromSpinBox.valueChanged.connect(update_ui)
- win.show()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement