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

本文是本人用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_())

运行结果
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值