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

来源:互联网 发布:使命召唤8武器数据 编辑:程序博客网 时间:2024/06/04 01:29

本文是本人用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, QtWidgetsclass 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 pyqtSlotfrom PyQt5.QtWidgets import QDialog, QApplicationfrom Ui_interest import Ui_Dialogimport sysclass 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 0
原创粉丝点击