PyQt5编写可视化程序GB/T 34986-2017 产品加速试验方法(B 5.5 湿度试验)

GB/T 34986-2017 产品加速试验方法(B 5.5 湿度试验)
阿伦纽斯模型-温度(Arrhenius Mode)
温度公式 AF = exp{(Ea/K)×[(1/Tu)-(1-Tt)]}
举例 AF = exp{[0.68/(8.617385×10e-5)]×[[1/(273+25)]-[1/(273+105)]]} ≈271.9518
AF 为加速因子
RHs 施加应力相对湿度值
RHu 为正常使用条件下的相对湿度值
n 湿度加速率常数介于2~3,推荐选择3
Ea 是析出故障的耗费能量,又称激活能。不同产品的激活能是不一样的。Ea一般来说,激活能的值在0.3ev~1.2ev之间;
K 是玻尔兹曼常数,其值为8.617385e-5
Tu Tu是使用条件下(非加速状态下)的温度值。此处的温度值是绝对温度值,以K(开尔文)作单位。开尔文以273计算
Tt 是测试条件下(加速状态下)的温度值。此处的温度值是绝对温度值,以K(开尔文)作单位。开尔文以273计算

一、UI

使用QT Designer软件设计出UI界面
然后使用pyuic转换成xml代码(不明白的搜一下pycharm设置pyuic,这里不赘述)
在这里插入图片描述
最终转换出的xml代码

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(490, 528)MainWindow.setMinimumSize(QtCore.QSize(490, 528))MainWindow.setMaximumSize(QtCore.QSize(490, 528))self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setStyleSheet("#centralwidget{background-color: qlineargradient(spread:pad, x1:0.5, y1:0.0453636, x2:0.5, y2:1, stop:0 rgba(37, 143, 152, 255), stop:1 rgba(255, 255, 255, 255));}\n"
"\n"
"")self.centralwidget.setObjectName("centralwidget")self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_5.setGeometry(QtCore.QRect(288, 436, 121, 48))font = QtGui.QFont()font.setFamily("楷体")font.setPointSize(12)font.setBold(True)font.setWeight(75)self.pushButton_5.setFont(font)self.pushButton_5.setStyleSheet("QPushButton{\n"
"    max-height: 48px;\n"
"    border-top-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-left-radius: 20px; /*左下角圆角*/\n"
"    background-color: rgba(0,110,255,150)\n"
"}\n"
"QPushButton:hover {\n"
"    background-color:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.0005, stop:0.536723 rgba(186, 239, 250, 255), stop:1 rgba(24, 176, 182, 255));\n"
"}\n"
"QPushButton:pressed {\n"
"    border-top-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-left-radius: 20px; /*左下角圆角*/\n"
"    border-top-left-radius: 20px; /*左下角圆角*/\n"
"    background-color: #ffffff;\n"
"    font-size:15pt\n"
"}\n"
"")self.pushButton_5.setObjectName("pushButton_5")self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_6.setGeometry(QtCore.QRect(98, 436, 121, 48))font = QtGui.QFont()font.setFamily("楷体")font.setPointSize(12)font.setBold(True)font.setWeight(75)self.pushButton_6.setFont(font)self.pushButton_6.setStyleSheet("QPushButton{\n"
"    max-height: 48px;\n"
"    border-top-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-left-radius: 20px; /*左下角圆角*/\n"
"    background-color: rgba(0,110,255,150)\n"
"}\n"
"QPushButton:hover {\n"
"    background-color:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.0005, stop:0.536723 rgba(186, 239, 250, 255), stop:1 rgba(24, 176, 182, 255));\n"
"    \n"
"}\n"
"QPushButton:pressed {\n"
"    border-top-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-left-radius: 20px; /*左下角圆角*/\n"
"    border-top-left-radius: 20px; /*左下角圆角*/\n"
"    background-color: #ffffff;\n"
"    font-size:15pt\n"
"}")self.pushButton_6.setAutoRepeatDelay(300)self.pushButton_6.setAutoDefault(False)self.pushButton_6.setDefault(False)self.pushButton_6.setObjectName("pushButton_6")self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit.setGeometry(QtCore.QRect(67, 62, 140, 25))self.lineEdit.setStyleSheet("#lineEdit{\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    background-color: #ebebeb;\n"
"    border:3px solid rgb(0, 0, 0);\n"
"}\n"
"/*QLineEdit:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}*/\n"
"#lineEdit:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit.setCursorMoveStyle(QtCore.Qt.LogicalMoveStyle)self.lineEdit.setObjectName("lineEdit")self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_2.setGeometry(QtCore.QRect(66, 100, 140, 25))self.lineEdit_2.setStyleSheet("#lineEdit_2{\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    background-color: #ebebeb;\n"
"    border: 3px solid  rgb(0, 0, 0);\n"
"}\n"
"#lineEdit_2:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit_2.setText("")self.lineEdit_2.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit_2.setReadOnly(False)self.lineEdit_2.setObjectName("lineEdit_2")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(30, 60, 31, 20))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setUnderline(False)font.setWeight(75)self.label.setFont(font)self.label.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label.setTextFormat(QtCore.Qt.AutoText)self.label.setIndent(-1)self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(30, 100, 31, 16))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setWeight(75)self.label_2.setFont(font)self.label_2.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label_2.setObjectName("label_2")self.label_3 = QtWidgets.QLabel(self.centralwidget)self.label_3.setGeometry(QtCore.QRect(214, 63, 31, 21))font = QtGui.QFont()font.setFamily("Arial")font.setPointSize(10)font.setBold(False)font.setWeight(50)self.label_3.setFont(font)self.label_3.setObjectName("label_3")self.label_4 = QtWidgets.QLabel(self.centralwidget)self.label_4.setGeometry(QtCore.QRect(214, 103, 21, 21))font = QtGui.QFont()font.setFamily("Arial")font.setPointSize(10)font.setBold(False)font.setWeight(50)self.label_4.setFont(font)self.label_4.setObjectName("label_4")self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_3.setGeometry(QtCore.QRect(65, 136, 140, 25))self.lineEdit_3.setStyleSheet("#lineEdit_3{\n"
"    border-top-right-radius: 10px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 10px; /*右下角圆角*/\n"
"    border-top-left-radius:10px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 10px; /*左下角圆角*/\n"
"    background-color: #ebebeb;\n"
"    border: 3px solid  rgb(0, 0, 0);\n"
"}\n"
"#lineEdit_3:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit_3.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit_3.setObjectName("lineEdit_3")self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_4.setGeometry(QtCore.QRect(65, 173, 140, 25))self.lineEdit_4.setStyleSheet("#lineEdit_4{\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    background-color: #ebebeb;\n"
"    border: 3px solid  rgb(0, 0, 0);\n"
"}\n"
"#lineEdit_4:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit_4.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit_4.setObjectName("lineEdit_4")self.lineEdit_5 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_5.setEnabled(False)self.lineEdit_5.setGeometry(QtCore.QRect(65, 210, 140, 25))self.lineEdit_5.setStyleSheet("#lineEdit_5{\n"
"\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    background-color: #bfbfbf;\n"
"    border: 3px solid  rgb(0, 0, 0);\n"
"}\n"
"#lineEdit_5:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit_5.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit_5.setObjectName("lineEdit_5")self.lineEdit_6 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_6.setGeometry(QtCore.QRect(65, 247, 140, 25))self.lineEdit_6.setStyleSheet("#lineEdit_6{\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    background-color: #ebebeb;\n"
"    border: 3px solid  rgb(0, 0, 0);\n"
"}\n"
"#lineEdit_6:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit_6.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit_6.setObjectName("lineEdit_6")self.lineEdit_7 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_7.setGeometry(QtCore.QRect(65, 284, 140, 25))self.lineEdit_7.setStyleSheet("#lineEdit_7{\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    background-color: #ebebeb;\n"
"    border: 3px solid  rgb(0, 0, 0);\n"
"}\n"
"#lineEdit_7:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit_7.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit_7.setObjectName("lineEdit_7")self.label_5 = QtWidgets.QLabel(self.centralwidget)self.label_5.setGeometry(QtCore.QRect(39, 136, 16, 16))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setWeight(75)self.label_5.setFont(font)self.label_5.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label_5.setObjectName("label_5")self.label_6 = QtWidgets.QLabel(self.centralwidget)self.label_6.setGeometry(QtCore.QRect(33, 178, 16, 16))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setWeight(75)self.label_6.setFont(font)self.label_6.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label_6.setObjectName("label_6")self.label_7 = QtWidgets.QLabel(self.centralwidget)self.label_7.setGeometry(QtCore.QRect(37, 214, 16, 16))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setWeight(75)self.label_7.setFont(font)self.label_7.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label_7.setObjectName("label_7")self.label_8 = QtWidgets.QLabel(self.centralwidget)self.label_8.setGeometry(QtCore.QRect(32, 249, 31, 20))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setWeight(75)self.label_8.setFont(font)self.label_8.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label_8.setObjectName("label_8")self.label_9 = QtWidgets.QLabel(self.centralwidget)self.label_9.setGeometry(QtCore.QRect(32, 287, 31, 21))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setWeight(75)self.label_9.setFont(font)self.label_9.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label_9.setObjectName("label_9")self.label_10 = QtWidgets.QLabel(self.centralwidget)self.label_10.setGeometry(QtCore.QRect(211, 250, 31, 21))self.label_10.setObjectName("label_10")self.label_11 = QtWidgets.QLabel(self.centralwidget)self.label_11.setGeometry(QtCore.QRect(211, 290, 41, 21))font = QtGui.QFont()font.setPointSize(10)self.label_11.setFont(font)self.label_11.setObjectName("label_11")self.label_12 = QtWidgets.QLabel(self.centralwidget)self.label_12.setGeometry(QtCore.QRect(240, 250, 231, 141))self.label_12.setStyleSheet("#label_12{border: 3px solid  rgb(0, 0, 0);\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    font-size:30pt;\n"
"}")self.label_12.setAlignment(QtCore.Qt.AlignCenter)self.label_12.setObjectName("label_12")self.label_13 = QtWidgets.QLabel(self.centralwidget)self.label_13.setGeometry(QtCore.QRect(80, 0, 331, 31))font = QtGui.QFont()font.setPointSize(14)font.setBold(True)font.setWeight(75)self.label_13.setFont(font)self.label_13.setStyleSheet("color: rgb(255, 255, 255);")self.label_13.setObjectName("label_13")self.label_14 = QtWidgets.QLabel(self.centralwidget)self.label_14.setGeometry(QtCore.QRect(27, 323, 31, 21))font = QtGui.QFont()font.setFamily("宋体")font.setPointSize(-1)font.setBold(True)font.setWeight(75)self.label_14.setFont(font)self.label_14.setStyleSheet("QLabel{\n"
"    color: rgb(85, 0, 255);\n"
"    font-size: 15px;\n"
"}")self.label_14.setObjectName("label_14")self.lineEdit_8 = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_8.setGeometry(QtCore.QRect(64, 322, 140, 25))self.lineEdit_8.setStyleSheet("#lineEdit_8{\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"    background-color: #ebebeb;\n"
"    border: 3px solid  rgb(0, 0, 0);\n"
"}\n"
"#lineEdit_8:focus{\n"
"    border: 3px solid  rgb(0, 110, 255);\n"
"}")self.lineEdit_8.setAlignment(QtCore.Qt.AlignCenter)self.lineEdit_8.setObjectName("lineEdit_8")self.label_15 = QtWidgets.QLabel(self.centralwidget)self.label_15.setGeometry(QtCore.QRect(212, 325, 41, 21))font = QtGui.QFont()font.setPointSize(10)self.label_15.setFont(font)self.label_15.setObjectName("label_15")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(450, 0, 41, 41))self.pushButton.setStyleSheet("#pushButton{\n"
"    max-height: 48px;\n"
"    border-top-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 20px; /*右上角圆角*/\n"
"    border-bottom-left-radius: 20px; /*左下角圆角*/\n"
"    border-top-left-radius: 20px; /*左下角圆角*/\n"
"\n"
"}\n"
"")self.pushButton.setText("")icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap("../Downloads/下载.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.pushButton.setIcon(icon)self.pushButton.setIconSize(QtCore.QSize(50, 50))self.pushButton.setDefault(False)self.pushButton.setFlat(True)self.pushButton.setObjectName("pushButton")self.label_16 = QtWidgets.QLabel(self.centralwidget)self.label_16.setGeometry(QtCore.QRect(240, 50, 231, 191))font = QtGui.QFont()font.setPointSize(9)font.setBold(False)font.setWeight(50)self.label_16.setFont(font)self.label_16.setStyleSheet("#label_16{\n"
"    color: rgb(255, 255, 255);\n"
"    border: 1px solid  rgb(255,255, 255);\n"
"    border-top-right-radius: 11px; /*右上角圆角*/\n"
"    border-bottom-right-radius: 11px; /*右下角圆角*/\n"
"    border-top-left-radius:11px; /*左上角圆角*/\n"
"    border-bottom-left-radius: 11px; /*左下角圆角*/\n"
"}")self.label_16.setObjectName("label_16")self.checkBox = QtWidgets.QCheckBox(self.centralwidget)self.checkBox.setGeometry(QtCore.QRect(60, 370, 71, 16))self.checkBox.setObjectName("checkBox")self.checkBox_2 = QtWidgets.QCheckBox(self.centralwidget)self.checkBox_2.setGeometry(QtCore.QRect(150, 370, 71, 16))self.checkBox_2.setObjectName("checkBox_2")MainWindow.setCentralWidget(self.centralwidget)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "GB/T34986-2017 B5.5温度试验计算"))self.pushButton_5.setText(_translate("MainWindow", "清空"))self.pushButton_6.setText(_translate("MainWindow", "结果"))self.lineEdit.setPlaceholderText(_translate("MainWindow", "测试湿度"))self.lineEdit_2.setPlaceholderText(_translate("MainWindow", "使用湿度"))self.label.setText(_translate("MainWindow", "RHs"))self.label_2.setText(_translate("MainWindow", "RHu"))self.label_3.setText(_translate("MainWindow", "%"))self.label_4.setText(_translate("MainWindow", "%"))self.lineEdit_3.setPlaceholderText(_translate("MainWindow", "湿度加速率(2~3)"))self.lineEdit_4.setPlaceholderText(_translate("MainWindow", "激活能(0.3~1.2eV)"))self.lineEdit_5.setPlaceholderText(_translate("MainWindow", "玻尔兹曼常数"))self.lineEdit_6.setPlaceholderText(_translate("MainWindow", "使用温度"))self.lineEdit_7.setPlaceholderText(_translate("MainWindow", "测试温度"))self.label_5.setText(_translate("MainWindow", "n"))self.label_6.setText(_translate("MainWindow", "Ea"))self.label_7.setText(_translate("MainWindow", "K"))self.label_8.setText(_translate("MainWindow", "Tu"))self.label_9.setText(_translate("MainWindow", "Tt"))self.label_10.setText(_translate("MainWindow", "℃"))self.label_11.setText(_translate("MainWindow", "℃"))self.label_12.setText(_translate("MainWindow", "结果"))self.label_13.setText(_translate("MainWindow", "GB/T34986-2017 B5.5温度试验计算"))self.label_14.setText(_translate("MainWindow", "Day"))self.lineEdit_8.setPlaceholderText(_translate("MainWindow", "正常使用期限"))self.label_15.setText(_translate("MainWindow", "天"))self.label_16.setText(_translate("MainWindow", "RHs 施加应力相对湿度值\n"
"-------------------------------------\n"
"RHu 正常使用时的湿度值\n"
"-------------------------------------\n"
"n   湿度加速率常数介于2~3,推荐选择3\n"
"-------------------------------------\n"
"Ea  激活能,其值在0.3ev~1.2ev之间\n"
"-------------------------------------\n"
"K   玻尔兹曼常数,为8.617385e-5\n"
"-------------------------------------\n"
"Tu  正常使用的温度值。\n"
"-------------------------------------\n"
"Tt  测试的温度值。"))self.checkBox.setText(_translate("MainWindow", "K值输入"))self.checkBox_2.setText(_translate("MainWindow", "保守计算"))

二、编写python调用界面并计算的代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time : 2023/8/10 10:54
# Author : kevin
# User : VINNO-Van
# Software: PyCharm
# File : 加速老化试验.py# class Arrhenius_Mode():
#     # GB/T 34986-2017 产品加速试验方法(B 5.5 湿度试验)
#     # 阿伦纽斯模型-温度(Arrhenius Mode)
#     # 温度公式 AF = exp{(Ea/K)×[(1/Tu)-(1-Tt)]}
#     # 举例 AF = exp{[0.68/(8.617385×10e-5)]×[[1/(273+25)]-[1/(273+105)]]} ≈271.9518
#     # AF 为加速因子
#     # RHs 施加应力相对湿度值
#     # RHu 为正常使用条件下的相对湿度值
#     # n 湿度加速率常数介于2~3,推荐选择3
#     # Ea 是析出故障的耗费能量,又称激活能。不同产品的激活能是不一样的。Ea一般来说,激活能的值在0.3ev~1.2ev之间;
#     # K 是玻尔兹曼常数,其值为8.617385e-5
#     # Tu Tu是使用条件下(非加速状态下)的温度值。此处的温度值是绝对温度值,以K(开尔文)作单位。开尔文以273计算
#     # Tt 是测试条件下(加速状态下)的温度值。此处的温度值是绝对温度值,以K(开尔文)作单位。开尔文以273计算
#     # AF, Ea, K, Tu, Tt = None, None, None, None, None
#     def Arrhenius(self, RHs, RHu, n, Ea, K, Tu, Tt):
#         # print('%.100f' % K)
#         global AF
#         Tu, Tt = Tu+273, Tt+273
#         AF = ((RHs/RHu) ** n) * math.exp((Ea/float(format(K, '.10f')))*((1/Tu)-(1/Tt)))
#         print('加速老化倍率为:%s 倍' % AF)
#         return AF
#     def Arrhenius_h(self):
#         hour = AF * 24
#         print('加速老化时间为:%s 小时' % hour)
#
#
#
# # Ea, K, Tu, Tt  = 0.68, 8.617385e-5, 25+273, 105+273  # '%.10f'
# a = Arrhenius_Mode()
# a.Arrhenius(95, 70, 3, 0.6, 8.617385e-5, 25, 50)
# a.Arrhenius_h()import math
import sys, os
from PyQt5.QtGui import (QIcon)
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtGui import QDoubleValidator
from untitled import Ui_MainWindow
os.environ["QT_FONT_DPI"] = "96"  # FIX Problem for High DPI and Scale above 100% 修复高DPI和比例超过100%的问题class Arrhenius_Mode():def Arrhenius(self, RHs, RHu, n, Ea, K, Tu, Tt):# print('%.100f' % K)global AFTu, Tt = Tu+273, Tt+273AF = ((RHs/RHu) ** n) * math.exp((Ea/float(format(K, '.10f')))*((1/Tu)-(1/Tt)))print('加速老化倍率为:%s 倍' % AF)return AFdef Arrhenius_h(self, Day):global test_Daytest_Day = Day/AFhour = test_Day*24print('加速老化时间为:%s 小时' % hour)return test_Dayclass MainWindow(QMainWindow, Arrhenius_Mode):def __init__(self):QMainWindow.__init__(self)self.ui = Ui_MainWindow()self.ui.setupUi(self)self.ui.retranslateUi(self)self.data_judge()  # 数值输入限制self.ui.pushButton_6.clicked.connect(lambda: self.input_value())  # 结果按钮self.ui.pushButton_5.clicked.connect(lambda: self.end_value())  # 清除按钮self.ui.checkBox.clicked.connect(lambda: self.checkbox_enable())self.ui.checkBox_2.clicked.connect(lambda: self.checkbox_2enable())def checkbox_enable(self):global K# 当K值输入被勾选时if self.ui.checkBox.isChecked() == True:self.ui.lineEdit_5.setStyleSheet("#lineEdit_5{\n""\n""    border-top-right-radius: 11px; /*右上角圆角*/\n""    border-bottom-right-radius: 11px; /*右下角圆角*/\n""    border-top-left-radius:11px; /*左上角圆角*/\n""    border-bottom-left-radius: 11px; /*左下角圆角*/\n""    background-color: #ebebeb;\n""    border: 3px solid  rgb(0, 0, 0);\n""}\n""#lineEdit_5:focus{\n""    border: 3px solid  rgb(0, 110, 255);\n""}")self.ui.lineEdit_5.setEnabled(True)K = self.ui.lineEdit_5.text()return Kelse:  # 当K值输入未被勾选时self.ui.lineEdit_5.setStyleSheet("#lineEdit_5{\n""\n""    border-top-right-radius: 11px; /*右上角圆角*/\n""    border-bottom-right-radius: 11px; /*右下角圆角*/\n""    border-top-left-radius:11px; /*左上角圆角*/\n""    border-bottom-left-radius: 11px; /*左下角圆角*/\n""    background-color: #bfbfbf;\n""    border: 3px solid  rgb(0, 0, 0);\n""}\n""#lineEdit_5:focus{\n""    border: 3px solid  rgb(0, 110, 255);\n""}")self.ui.lineEdit_5.clear()self.ui.lineEdit_5.setEnabled(False)K = "8.617385e-5"return Kdef checkbox_2enable(self):if self.ui.checkBox_2.isChecked() == True:global n, Eaself.ui.lineEdit_3.setText('2')n = '2'self.ui.lineEdit_4.setText('0.3')Ea = '0.3'else:self.ui.lineEdit_3.clear()self.ui.lineEdit_4.clear()# 数值输入限制,防止输入错误def data_judge(self):# 这里应该写个函数进行调用,为了直观就复写了几次# 浮点输入限制(RHs,RHu)doubleValidator = QDoubleValidator()doubleValidator.setRange(0, 100)doubleValidator.setNotation(QDoubleValidator.StandardNotation)doubleValidator.setDecimals(5)  # 设置浮点精度为10位# 浮点输入限制(n)doubleValidator1 = QDoubleValidator()doubleValidator1.setRange(2, 3)doubleValidator1.setNotation(QDoubleValidator.StandardNotation)doubleValidator1.setDecimals(5)  # 设置浮点精度为10位# 浮点输入限制(Ea)doubleValidator2 = QDoubleValidator()doubleValidator2.setRange(0, 2)doubleValidator2.setNotation(QDoubleValidator.StandardNotation)doubleValidator2.setDecimals(5)  # 设置浮点精度为10位# 浮点输入限制(K)doubleValidator3 = QDoubleValidator()doubleValidator3.setRange(0, 1.2)doubleValidator3.setNotation(QDoubleValidator.StandardNotation)doubleValidator3.setDecimals(30)  # 设置浮点精度为10位# 浮点输入限制(Tu,Tt, Day)doubleValidator4 = QDoubleValidator()doubleValidator4.setRange(0, 36500)doubleValidator4.setNotation(QDoubleValidator.StandardNotation)doubleValidator4.setDecimals(5)  # 设置浮点精度为10位self.ui.lineEdit.setValidator(doubleValidator)self.ui.lineEdit_2.setValidator(doubleValidator)self.ui.lineEdit_3.setValidator(doubleValidator1)self.ui.lineEdit_4.setValidator(doubleValidator2)self.ui.lineEdit_5.setValidator(doubleValidator3)self.ui.lineEdit_6.setValidator(doubleValidator4)self.ui.lineEdit_7.setValidator(doubleValidator4)self.ui.lineEdit_8.setValidator(doubleValidator4)def input_value(self):global KRHs = self.ui.lineEdit.text()RHu = self.ui.lineEdit_2.text()n = self.ui.lineEdit_3.text()Ea = self.ui.lineEdit_4.text()Tu = self.ui.lineEdit_6.text()Tt = self.ui.lineEdit_7.text()Day = self.ui.lineEdit_8.text()K = self.checkbox_enable()# 判断非空输入if RHs != '' and RHu != '' and n != '' and Ea != '' and K != '' and Tu != '' and Tt != '' and Day != '':RHs = float(self.ui.lineEdit.text())RHu = float(self.ui.lineEdit_2.text())n = float(self.ui.lineEdit_3.text())Ea = float(self.ui.lineEdit_4.text())print(self.ui.lineEdit_5.text(), type(self.ui.lineEdit_5.text()))K = float(self.checkbox_enable())Tu = float(self.ui.lineEdit_6.text())Tt = float(self.ui.lineEdit_7.text())Day = float(self.ui.lineEdit_8.text())# self.Arrhenius(95, 70, 3, 0.6, 8.617385e-5, 25, 50)self.result_AF, self.result_test_day = self.Arrhenius(RHs, RHu, n, Ea, K, Tu, Tt), self.Arrhenius_h(Day)# 结果label字体设置self.ui.label_12.setStyleSheet("#label_12{border: 3px solid  rgb(0, 0, 0);\n""    border-top-right-radius: 11px; /*右上角圆角*/\n""    border-bottom-right-radius: 11px; /*右下角圆角*/\n""    border-top-left-radius:11px; /*左上角圆角*/\n""    border-bottom-left-radius: 11px; /*左下角圆角*/\n""    font-size:10pt;\n""    color:rgba(0, 80, 255);\n""}")# 结果label显示self.ui.label_12.setText(str('加速老化倍率为:\n%s\n''--------------------------\n''试验天数为:\n%s 天\n''--------------------------\n''试验小时数为:\n%s 小时'% (self.result_AF, self.result_test_day, self.result_test_day*24)))else:# 弹窗提示数值错误QMessageBox.information(self, "提示", "输入值存在错误,请检查", QMessageBox.Ok)# 清除按钮操作def end_value(self):self.ui.lineEdit.clear()self.ui.lineEdit_2.clear()self.ui.lineEdit_3.clear()self.ui.lineEdit_4.clear()self.ui.lineEdit_5.clear()self.ui.lineEdit_6.clear()self.ui.lineEdit_7.clear()self.ui.lineEdit_8.clear()self.ui.label_12.setText("结果")self.ui.label_12.setStyleSheet("#label_12{border: 3px solid  rgb(0, 0, 0);\n""    border-top-right-radius: 11px; /*右上角圆角*/\n""    border-bottom-right-radius: 11px; /*右下角圆角*/\n""    border-top-left-radius:11px; /*左上角圆角*/\n""    border-bottom-left-radius: 11px; /*左下角圆角*/\n""    font-size:30pt;\n""}")if __name__ == "__main__":app = QApplication(sys.argv)app.setWindowIcon(QIcon("icon.ico"))window = MainWindow()window.show()sys.exit(app.exec_())

三、打包python程序

找到python程序所在文件夹
鼠标右键点击后选择,“在终端打开”
在这里插入图片描述
在命令窗口输入
pyinstaller -D -w Arrhenius.py 然后回车
等待软件打包完成
打包完成提示Building COLLECT COLLECT-00.toc completed successfully.,如下图
在这里插入图片描述
此时文件夹中会多两个文件夹
打开dist,找到Arrhenius.exe文件,双击运行看是否能够正常运行
在这里插入图片描述
在这里插入图片描述

四、打包成绿色版

使用Greenone程序对Arrhenius.exe文件进行打包
打包完成后,会有个图标单文件可执行程序,双击即可单文件进行运行。(其实是所有运行依赖文件被Greenone打包成压缩包变成了可执行压缩程序,运行时系统会先解压在运行,但是用户无感知)
在这里插入图片描述
最终运行界面
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/69390.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记 - 基于PyTorch + 类似ResNet的单目标检测

一、获取并了解数据 我们将处理年龄相关性黄斑变性 (AMD) 患者的眼部图像。 数据集下载地址,从下面的地址中,找到iChallenge-AMD,然后下载。 Baidu Research Open-Access Dataset - DownloadDownload Baidu Research Open-Access Datasethttps://ai.baidu.com/bro…

【FPGA零基础学习之旅#10】按键消抖模块设计与验证(一段式状态机实现)

🎉欢迎来到FPGA专栏~按键消抖模块设计与验证 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大…

日志采集分析ELK

这里的 ELK其实对应三种不同组件 1.ElasticSearch:基于Java,一个开源的分布式搜索引擎。 2.LogStash:基于Java,开源的用于收集,分析和存储日志的工具。(它和Beats有重叠的功能,Beats出现之后&a…

无人机跟随一维高度避障场景--逻辑分析

无人机跟随一维高度避障场景--逻辑分析 1. 源由2. 视频3. 问题3.1 思维发散3.2 问题收敛 4. 图示4.1 水平模式4.2 下坡模式4.3 上坡模式4.4 碰撞分析 5. 总结5.1 一维高度避障场景5.2 业界跟随产品5.3 APM集成跟随 6. 参考资料7. 补充资料 - 大疆智能跟随7.1 炸机7.2 成功 1. 源…

安卓:网络框架okhttp

目录 一、okhttp介绍 1. OkHttpClient类: 常用方法: 2. Request类: 常用方法: 3. Response类: 常用方法: 4. Call类: 常用方法: 5. Interceptor接口: 常用方法&…

如何在 .NET Core WebApi 中处理 MultipartFormDataContent 中的文件

问题描述# 上图示例展示了用户通过 IOS 客户端发送请求时,对应后端接口接收到的 Request 内容。从请求内容的整体结果,我们可以看出这是一个 multipart/form-data 的数据格式,由于这种数据是由多个 multipart section 组成,所以我…

Reis过期删除策略

介绍 在Redis中,我们可以为键值对设置有效期,现在面临一个问题,如果一个键值对过期了,那么我们应该怎么删除呢? 我们目前有三种方案: 定时删除:在设置键的过期时间的同时,为此键设…

山西电力市场日前价格预测【2023-08-17】

日前价格预测 预测明日(2023-08-17)山西电力市场全天平均日前电价为376.70元/MWh。其中,最高日前电价为431.75元/MWh,预计出现在19: 45。最低日前电价为339.25元/MWh,预计出现在13: 15。 价差方向预测 1: 实…

WSL2 Ubuntu子系统安装OpenCV

文章目录 前言一、基本概念二、操作步骤1.下载源码2.安装依赖3.运行编译4.配置路径 前言 OpenCV用C语言编写,它的主要接口也是C语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语…

【JavaEE基础学习打卡02】是时候了解Java EE了!

目录 前言一、为什么要学习Java EE二、Java EE规范介绍1.什么是规范?2.什么是Java EE规范?3.Java EE版本 三、Java EE应用程序模型1.模型前置说明2.模型具体说明 总结 前言 📜 本系列教程适用于 Java Web 初学者、爱好者,小白白。…

域名配置HTTPS

一、注册域名 这个可以在各大平台注册,具体看一下就会注册了,自己挑选一个自己喜欢的域名。 步骤一般也就是先实名,实名成功了才能注册域名。 二、办理SSL证书 这里使用的是阿里云的SSL免费证书 1、申请证书 二、填写申请 三、域名绑定生…

【Java】BF算法(串模式匹配算法)

☀️ 什么是BF算法 BF算法,即暴力算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个与模式串T的第一个字符串进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则…