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
#currency.py
运行结果
#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快速编程-第四章的Exercise例子Interest的python3+pytq5+Qt Designer实现
- Python Qt GUI快速编程-第五章的例子Numbers的python3+pytq5+Qt Designer实现
- Python Qt GUI快速编程-第五章的例子pen的python3+pytq5+Qt Designer实现
- Python Qt GUI快速编程-第四章的digit的python3+pytq5+Qt Designer实现
- Python Qt GUI快速编程-第四章的计算器python3+pytq5+Qt Designer实现
- Python Qt GUI快速编程-第五章的exercise的python3+pytq5+Qt Dersinger实现
- Qt Gui快速编程 第四章 源码
- PYTHON QT GUI快速编程 PYQT编程指南pdf
- Python Qt GUI快速编程第六章代码分析
- 用python3+PyQt5改写Python Qt GUI快速编程的第七章实例Find Dialog
- 用python3+PyQt5改写Python Qt GUI快速编程的第6章实例主窗口
- 用python3+PyQt5改写Python Qt GUI快速编程的第6章实例主窗口 信号及槽如何使用
- Python GUI编程各种实现的对比
- Python GUI编程各种实现的对比
- python3.6+pyqt5 IDE: Pycahrm+Qtdesign 快速开发GUI程序学习资源
- 【编程练习】快速排序,Java和Python实现
- Python-GUI编程之 Tkinter 与 记事本实现心得
- 翻译:《用python和Qt进行GUI编程》——介绍
- 黑白棋算法简单实现与基于Qt的GUI编程的综合应用
- python 实现GUI(图形用户界面)编程