您的位置:首页 > 编程语言 > Python开发

Python Qt GUI快速编程-第四章的Currency例子的python3+pytq5+Qt Designer实现

2016-12-30 10:35 1036 查看
本文是本人用python3+pytq5+Qt Designer实现Python Qt GUI快速编程-第四章的Currency例子,请大家参考。

#Ui_currency.py

# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(412, 142)
Dialog.setSizeGripEnabled(True)
self.gridLayoutWidget = QtWidgets.QWidget(Dialog)
self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 20, 391, 117))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(5, 5, 5, 3)
self.gridLayout.setObjectName("gridLayout")
self.fromComboBox = QtWidgets.QComboBox(self.gridLayoutWidget)
self.fromComboBox.setObjectName("fromComboBox")
self.gridLayout.addWidget(self.fromComboBox, 2, 1, 1, 1)
self.dataLabel = QtWidgets.QLabel(self.gridLayoutWidget)
self.dataLabel.setObjectName("dataLabel")
self.gridLayout.addWidget(self.dataLabel, 0, 1, 1, 1)
self.toComboBox = QtWidgets.QComboBox(self.gridLayoutWidget)
self.toComboBox.setObjectName("toComboBox")
self.gridLayout.addWidget(self.toComboBox, 3, 1, 1, 1)
self.toLabel = QtWidgets.QLabel(self.gridLayoutWidget)
self.toLabel.setObjectName("toLabel")
self.gridLayout.addWidget(self.toLabel, 3, 2, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 1, 1, 1, 1)
self.fromSpinBox = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget)
self.fromSpinBox.setObjectName("fromSpinBox")
self.gridLayout.addWidget(self.fromSpinBox, 2, 2, 1, 1)

self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "汇率"))
self.dataLabel.setText(_translate("Dialog", "TextLabel"))
self.toLabel.setText(_translate("Dialog", "TextLabel"))

if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())


#currency.py

# -*- coding: utf-8 -*-

"""
Module implementing Currency.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog,QApplication
from Ui_currency import Ui_Dialog
import sys
import urllib.request
import re

class Currency(QDialog, Ui_Dialog):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
"""
Constructor

@param parent reference to the parent widget
@type QWidget
"""
super(Currency, self).__init__(parent)
self.setupUi(self)

date = self.getdata()
rates = sorted(self.rates.keys())

self.dataLabel.setText(date)
self.fromComboBox.addItems(rates)
self.fromSpinBox.setRange(0.01, 10000000.00)
self.fromSpinBox.setValue(1.00)
self.toComboBox.addItems(rates)
self.toLabel.setText("1.00")
self.fromComboBox.currentIndexChanged.connect(self.updateUi)
self.toComboBox.currentIndexChanged.connect(self.updateUi)
self.fromSpinBox.valueChanged.connect(self.updateUi)
def getdata(self): # Idea taken from the Python Cookbook
self.rates = {}
try:
date = "Unknown"
fh = urllib.request.urlopen("http://www.bankofcanada.ca/en/markets/csv/exchange_eng.csv")
csv_data = str(fh.read())
pattern = re.compile('Date[\s\S]*')#以"Date"关键词,匹配"Date"之后的数据
csv_data = pattern.search(csv_data)
csv_data = csv_data.group(0)
csv_data = csv_data.split("\\n")#以换行符为标志生成数据列表
for line in csv_data:
line = line.rstrip()
if not line or line.startswith(("#", "Closing ")):
continue
fields = line.split(",")
if line.startswith("Date "):
date = fields[-1]
else:
try:
value = float(fields[-1])
self.rates[fields[0]] = value
except ValueError:
pass
return "Exchange Rates Date: " + date
except Exception as e:
return "Failed to download:\n{0}".format(e)
def updateUi(self):
to = self.toComboBox.currentText()#把unicode去掉
from_ = self.fromComboBox.currentText()#把unicode去掉
amount = (self.rates[from_] / self.rates[to]) * \
self.fromSpinBox.value()
self.toLabel.setText("%0.2f" % amount)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
dlg=Currency()
dlg.show()
sys.exit(app.exec_())


运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python qt gui