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

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

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

/home/yrd/eric_workspace/interest/Ui_interest.py

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

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(266, 187)
Dialog.setSizeGripEnabled(True)
self.formLayoutWidget = QtWidgets.QWidget(Dialog)
self.formLayoutWidget.setGeometry(QtCore.QRect(10, 10, 241, 163))
self.formLayoutWidget.setObjectName("formLayoutWidget")
self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget)
self.formLayout.setContentsMargins(10, 10, 10, 10)
self.formLayout.setSpacing(15)
self.formLayout.setObjectName("formLayout")
self.principalLabel = QtWidgets.QLabel(self.formLayoutWidget)
self.principalLabel.setObjectName("principalLabel")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.principalLabel)
self.principalSpinBox = QtWidgets.QDoubleSpinBox(self.formLayoutWidget)
self.principalSpinBox.setMinimum(1.0)
self.principalSpinBox.setMaximum(1000000000.0)
self.principalSpinBox.setProperty("value", 1000.0)
self.principalSpinBox.setObjectName("principalSpinBox")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.principalSpinBox)
self.rateLabel = QtWidgets.QLabel(self.formLayoutWidget)
self.rateLabel.setObjectName("rateLabel")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.rateLabel)
self.yearsLabel = QtWidgets.QLabel(self.formLayoutWidget)
self.yearsLabel.setObjectName("yearsLabel")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.yearsLabel)
self.amountLabel_1 = QtWidgets.QLabel(self.formLayoutWidget)
self.amountLabel_1.setObjectName("amountLabel_1")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.amountLabel_1)
self.amountLabel = QtWidgets.QLabel(self.formLayoutWidget)
self.amountLabel.setObjectName("amountLabel")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.amountLabel)
self.rateSpinBox = QtWidgets.QDoubleSpinBox(self.formLayoutWidget)
self.rateSpinBox.setMinimum(1.0)
self.rateSpinBox.setMaximum(100.0)
self.rateSpinBox.setProperty("value", 5.0)
self.rateSpinBox.setObjectName("rateSpinBox")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.rateSpinBox)
self.yearsComboBox = QtWidgets.QComboBox(self.formLayoutWidget)
self.yearsComboBox.setObjectName("yearsComboBox")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.yearsComboBox)

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

def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Interest"))
self.principalLabel.setText(_translate("Dialog", "Principal:"))
self.principalSpinBox.setPrefix(_translate("Dialog", "$"))
self.rateLabel.setText(_translate("Dialog", "Rate:"))
self.yearsLabel.setText(_translate("Dialog", "Years:"))
self.amountLabel_1.setText(_translate("Dialog", "Amount:"))
self.amountLabel.setText(_translate("Dialog", "TextLabel"))
self.rateSpinBox.setSuffix(_translate("Dialog", "%"))

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_())


/home/yrd/eric_workspace/interest/interest.py

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

"""
Module implementing interest.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog, QApplication

from Ui_interest import Ui_Dialog
import sys

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

@param parent reference to the parent widget
@type QWidget
"""
super(interest, self).__init__(parent)
self.setupUi(self)
self.yearsComboBox.addItems(["{0} years".format(x)
for x in range(1, 26)])

@pyqtSlot(float)
def on_principalSpinBox_valueChanged(self, p0):
"""
Slot documentation goes here.

@param p0 DESCRIPTION
@type float
"""
self.updateUi()

@pyqtSlot(float)
def on_rateSpinBox_valueChanged(self, p0):
"""
Slot documentation goes here.

@param p0 DESCRIPTION
@type float
"""
self.updateUi()

@pyqtSlot(int)
def on_yearsComboBox_currentIndexChanged(self, index):
"""
Slot documentation goes here.

@param index DESCRIPTION
@type int
"""
self.updateUi()

def updateUi(self):
"""Calculates compound interest"""
principal = self.principalSpinBox.value()
rate = self.rateSpinBox.value()
years = self.yearsComboBox.currentIndex() + 1
amount = principal * ((1 + (rate / 100.0)) ** years)
self.amountLabel.setText("$ {0:.2f}".format(amount))

if __name__ == "__main__":
app = QApplication(sys.argv)
dlg = interest()
dlg.show()
sys.exit(app.exec_())


运行结果

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