• 普通螺纹基本牙型尺寸及拧紧力矩.exe


    一、概要

    在这里插入图片描述

    在这里插入图片描述

      本软件功能主要是通过输入螺纹原始三角形高度P,螺栓规格(公称直径)d,材料的屈服应力σs,计算出公称应力截面积As、外螺纹小径d1、外螺纹小径d2、拧紧力矩T等参数。

      开发本软件的原因主要有以下几点:

    1. 提高设计效率:通过这款软件,工程师可以快速计算螺纹的基本牙型尺寸和拧紧力矩,减少繁琐的手动计算,提高设计效率。
    2. 增强设计准确性:该软件基于严谨的数学模型和算法进行计算,避免了手动计算可能出现的错误,提高了设计的准确性。
    3. 方便易用:该软件具备友好的用户界面,使得用户可以便捷地进行操作,输入参数即可得到结果,省去了繁琐的手动计算过程。

    二、技术细节

      这段代码中主要完成的任务有:

    1. 读取用户输入的一些参数(例如螺纹的原始三角形高度P,螺栓规格(公称直径)d,材料的屈服应力σs等)。
    2. 计算螺纹的原始三角形高度P,外螺纹的小径d1,中径d2,以及螺栓的公称应力截面积As。
    3. 根据这些计算结果,进一步计算拧紧力矩T。
    4. 将所有的计算结果以特定格式(保留指定位数的小数)显示给用户。

      代码技术细节:

    • self.significant_digit_lineEdit.text():从用户界面获取需要保留的有效数字位数。
    • float(self.P_lineEdit.text())float(self.d_lineEdit.text())float(self.s_lineEdit.text()):从用户界面读取输入的参数值,转换为浮点数。
    • math.sqrt(3):开平方根运算。
    • "{:.{}f}".format(H, int(self.significant_digit_lineEdit.text())):格式化输出,保留指定位数的小数。例如,如果用户输入要保留的位数为3,那么P会被格式化为类似"3.142"这样的形式。
    • self.d1_lineEdit.setText(...)self.d2_lineEdit.setText(...)self.A_lineEdit.setText(...)self.T_lineEdit.setText(...)等:将这些计算结果显示给用户。

    三、完整代码

    软件开发所用到的excel表和icon图标均已打包:statics

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time : 2023-10-14 14:57
    # @Author : Leuanghing Chen
    # @Blog : https://blog.csdn.net/weixin_46153372?spm=1010.2135.3001.5421
    # @File : 普通螺纹基本牙型尺寸及拧紧力矩.py
    # @Software : PyCharm
    # pyinstaller --clean -y -w --icon D:\python_demo\2、普通螺纹基本牙型尺寸及拧紧力矩\螺丝大图标.ico D:\python_demo\2、普通螺纹基本牙型尺寸及拧紧力矩\screw.py
    # 打包好程序后将icon和statics文件夹复制到程序所在文件夹中
    
    import math
    import multiprocessing
    import sys
    from html import unescape
    from openpyxl import load_workbook
    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QVBoxLayout, QTableWidget, QTableWidgetItem
    
    
    # 主界面
    class Ui_MainWindow(QMainWindow):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(680, 310)
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
            MainWindow.setSizePolicy(sizePolicy)
            MainWindow.setMinimumSize(QtCore.QSize(680, 310))
            MainWindow.setMaximumSize(QtCore.QSize(680, 310))
            font = QtGui.QFont()
            font.setFamily("微软雅黑")
            font.setPointSize(12)
            MainWindow.setFont(font)
            icon = QtGui.QIcon()
            icon.addPixmap(QtGui.QPixmap("./icon/螺丝小图标.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
            MainWindow.setWindowIcon(icon)
            MainWindow.setStyleSheet("background-color: rgb(255, 255, 255);\n"
                                     "color: rgb(0, 0, 0);")
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.d1_unit_label = QtWidgets.QLabel(self.centralwidget)
            self.d1_unit_label.setGeometry(QtCore.QRect(306, 57, 40, 30))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.d1_unit_label.sizePolicy().hasHeightForWidth())
            self.d1_unit_label.setSizePolicy(sizePolicy)
            self.d1_unit_label.setMinimumSize(QtCore.QSize(40, 30))
            self.d1_unit_label.setMaximumSize(QtCore.QSize(40, 30))
            font = QtGui.QFont()
            font.setFamily("Times New Roman")
            font.setPointSize(14)
            self.d1_unit_label.setFont(font)
            self.d1_unit_label.setObjectName("d1_unit_label")
            self.Units_textEdit = QtWidgets.QTextEdit(self.centralwidget)
            self.Units_textEdit.setEnabled(False)
            self.Units_textEdit.setGeometry(QtCore.QRect(380, 25, 265, 50))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.Units_textEdit.sizePolicy().hasHeightForWidth())
            self.Units_textEdit.setSizePolicy(sizePolicy)
            self.Units_textEdit.setMinimumSize(QtCore.QSize(265, 50))
            self.Units_textEdit.setMaximumSize(QtCore.QSize(265, 50))
            self.Units_textEdit.setLayoutDirection(QtCore.Qt.LeftToRight)
            self.Units_textEdit.setStyleSheet("background-color: rgb(255, 255, 127);")
            self.Units_textEdit.setObjectName("Units_textEdit")
            self.A_unit_label = QtWidgets.QLabel(self.centralwidget)
            self.A_unit_label.setGeometry(QtCore.QRect(306, 21, 40, 30))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.A_unit_label.sizePolicy().hasHeightForWidth())
            self.A_unit_label.setSizePolicy(sizePolicy)
            self.A_unit_label.setMinimumSize(QtCore.QSize(40, 30))
            self.A_unit_label.setMaximumSize(QtCore.QSize(40, 30))
            font = QtGui.QFont()
            font.setFamily("Times New Roman")
            font.setPointSize(14)
            self.A_unit_label.setFont(font)
            self.A_unit_label.setObjectName("A_unit_label")
            self.A_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.A_lineEdit.setEnabled(False)
            self.A_lineEdit.setGeometry(QtCore.QRect(200, 21, 100, 30))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.A_lineEdit.sizePolicy().hasHeightForWidth())
            self.A_lineEdit.setSizePolicy(sizePolicy)
            self.A_lineEdit.setMinimumSize(QtCore.QSize(90, 30))
            self.A_lineEdit.setMaximumSize(QtCore.QSize(100, 30))
            font = QtGui.QFont()
            font.setFamily("Times New Roman")
            font.setPointSize(14)
            self.A_lineEdit.setFont(font)
            self.A_lineEdit.setStyleSheet("background-color: rgb(85, 255, 255);")
            self.A_lineEdit.setText("")
            self.A_lineEdit.setAlignment(QtCore.Qt.AlignCenter)
            self.A_lineEdit.setObjectName("A_lineEdit")
            self.Vertical_line = QtWidgets.QFrame(self.centralwidget)
            self.Vertical_line.setGeometry(QtCore.QRect(352, 10, 16, 223))
            self.Vertical_line.setFrameShape(QtWidgets.QFrame.VLine)
            self.Vertical_line.setFrameShadow(QtWidgets.QFrame.Sunken)
            self.Vertical_line.setObjectName("Vertical_line")
            self.A_label = QtWidgets.QLabel(self.centralwidget)
            self.A_label.setGeometry(QtCore.QRect(10, 21, 190, 30))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.A_label.sizePolicy().hasHeightForWidth())
            self.A_label.setSizePolicy(sizePolicy)
            self.A_label.setMinimumSize(QtCore.QSize(190, 30))
            self.A_label.setMaximumSize(QtCore.QSize(180, 30))
            font = QtGui.QFont()
            font.setFamily("楷体")
            font.setPointSize(12)
            font.setBold(True)
            font.setWeight(75)
            self.A_label.setFont(font)
            self.A_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
            self.A_label.setObjectName("A_label")
            self.horizontal_line_1 = QtWidgets.QFrame(self.centralwidget)
            self.horizontal_line_1.setGeometry(QtCore.QRect(5, 5, 670, 10))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.horizontal_line_1.sizePolicy().hasHeightForWidth())
            self.horizontal_line_1.setSizePolicy(sizePolicy)
            self.horizontal_line_1.setMinimumSize(QtCore.QSize(670, 10))
            self.horizontal_line_1.setMaximumSize(QtCore.QSize(670, 10))
            self.horizontal_line_1.setFrameShape(QtWidgets.QFrame.HLine)
            self.horizontal_line_1.setFrameShadow(QtWidgets.QFrame.Sunken)
            self.horizontal_line_1.setObjectName("horizontal_line_1")
            self.H_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.H_lineEdit.setEnabled(False)
            self.H_lineEdit.setGeometry(QtCore.QRect(200, 122, 100, 30))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.H_lineEdit.sizePolicy().hasHeightForWidth())
            self.H_lineEdit.setSizePolicy(sizePolicy)
            self.H_lineEdit.setMinimumSize(QtCore.QSize(90, 30))
            self.H_lineEdit.setMaximumSize(QtCore.QSize(100, 30))
            font = QtGui.QFont()
            font.setFamily("Times New Roman")
            font.setPointSize(14)
            self.H_lineEdit.setFont(font)
            self.H_lineEdit.setStyleSheet("background-color: rgb(85, 255, 255);")
            self.H_lineEdit.setText("")
            self.H_lineEdit.setAlignment(QtCore.Qt.AlignCenter)
            self.H_lineEdit.setObjectName("H_lineEdit")
            self.H_label = QtWidgets.QLabel(self.centralwidget)
            self.H_label.setGeometry(QtCore.QRect(10, 122, 190, 30))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.H_label.sizePolicy().hasHeightForWidth())
            self.H_label.setSizePolicy(sizePolicy)
            self.H_label.setMinimumSize(QtCore.QSize(190, 30))
            self.H_label.setMaximumSize(QtCore.QSize(180, 30))
            font = QtGui.QFont()
            font.setFamily("楷体")
            font.setPointSize(12)
            font.setBold(True)
            font.setWeight(75)
            self.H_label.setFont(font)
            self.H_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
            self.H_label.setObjectName("H_label")
            self.d2_lineEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.d2_lineEdit.setEnabled(False)
            self.d2_lineEdit.setGeometry(QtCore.QRect(200, 89, 100, 30))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
  • 相关阅读:
    3、Pinpoint-Agent端注册服务到Server端
    webservice接口调用
    自动化测试 — selenium + Java
    【LeetCode 力扣】2.两数相加 Java实现 模拟 递归
    8.谈谈线程安全:活跃性问题(死锁、活锁、饥饿)
    5 Dijkstra算法的设计--来源王英S同学
    特征筛选还在用XGB的Feature Importance?试试Permutation Importance
    变速外挂案例及原理分析
    【高阶产品策略】设计有效的AB测试
    离线升级esp32开发板升级包esp32-2.0.14(最新版已经3.0alpha了)
  • 原文地址:https://blog.csdn.net/weixin_46153372/article/details/133826779