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
|
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QTabWidget, QLineEdit, QLabel, QMessageBox
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建主窗口和布局
self.setWindowTitle("Dynamic Tabs with Functions")
self.setGeometry(100, 100, 400, 300)
# 创建 QTabWidget
self.tabs = QTabWidget()
self.setCentralWidget(self.tabs)
# 添加初始分页
self.add_dew_point_to_ppm_tab()
self.add_subtract_tab()
def add_dew_point_to_ppm_tab(self):
tab = QWidget()
layout = QVBoxLayout()
# 输入框和按钮
self.input1 = QLineEdit()
self.input1.setPlaceholderText("请输入露点温度 (°C)")
self.input2 = QLineEdit()
self.input2.setPlaceholderText("请输入总压力 (atm)")
self.result_label = QLabel("体积分数: ")
cal_button = QPushButton("计算")
cal_button.clicked.connect(self.dew_point_to_ppm)
layout.addWidget(self.input1)
layout.addWidget(self.input2)
layout.addWidget(cal_button)
layout.addWidget(self.result_label)
tab.setLayout(layout)
self.tabs.addTab(tab, "露点 -> 体积分数")
def dew_point_to_ppm(self):
try:
# 输入验证
T_d_Celsius = float(self.input1.text())
P_total_atm = float(self.input2.text())
if P_total_atm <= 0:
raise ValueError("总压力必须大于0")
# Antoine 方程的常数
A = 8.07131
B = 1730.63
C = 233.426
# 计算饱和蒸汽压 P_H2O(T_d)
P_H2O_mmHg = 10 ** (A - (B / (T_d_Celsius + C)))
P_H2O_atm = P_H2O_mmHg / 760
# 计算水蒸气浓度(ppm)
C_H2O_ppm = (P_H2O_atm / P_total_atm) * 1e6
self.result_label.setText(f"体积分数: {C_H2O_ppm:.2f} ppm")
except ValueError as e:
QMessageBox.warning(self, "输入错误", f"请输入有效的数字.\n错误: {str(e)}")
def add_subtract_tab(self):
tab = QWidget()
layout = QVBoxLayout()
# 输入框和按钮
self.input3 = QLineEdit()
self.input3.setPlaceholderText("输入第一个数")
self.input4 = QLineEdit()
self.input4.setPlaceholderText("输入第二个数")
self.result_label_subtract = QLabel("结果:")
subtract_button = QPushButton("计算减法")
subtract_button.clicked.connect(self.calculate_subtraction)
layout.addWidget(self.input3)
layout.addWidget(self.input4)
layout.addWidget(subtract_button)
layout.addWidget(self.result_label_subtract)
tab.setLayout(layout)
self.tabs.addTab(tab, "减法计算")
def calculate_subtraction(self):
try:
num1 = float(self.input3.text())
num2 = float(self.input4.text())
result = num1 - num2
self.result_label_subtract.setText(f"结果: {result:.2f}")
except ValueError:
QMessageBox.warning(self, "输入错误", "请输入有效的数字.")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec())
|