首页 > Chemistry, Script > snail 溶剂比例计算器升级版

snail 溶剂比例计算器升级版

[总点击:327次]
2009年12月12日

添加了利用现有两种溶液来计算欲配溶液的功能
修复了一些易引发错误的代码。
片片:
snail2 抓图

代码:
snail.py :

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
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
# Author:   xiooli <xioooli[at]yahoo.com.cn>
# Site:     http://joolix.com
# Licence:  GPLv3
 
import sys, os
from PyQt4 import QtCore, QtGui
from ui_zh import Ui_mainWindow
from PyQt4.QtGui import QMainWindow
from PyQt4.QtCore import pyqtSignature
 
 
class Win(QMainWindow, Ui_mainWindow):
    def __init__(self, parent = None):
        QMainWindow.__init__(self, parent)
        self.setupUi(self)
    @pyqtSignature("")
    def on_pushButton_clicked(self):
        self.label_6_txt = ""
        now_B_A = now_B_B = ""
        continue_com = ""
        vol = ""
        rst = ""
 
        try:
            now_B_A = float(self.lineEdit_4.text())
            now_B_B = float(self.lineEdit_5.text())
        except:
            pass
        try:
            now_A_A = float(self.lineEdit_1.text())
            now_A_B = float(self.lineEdit_2.text())
            now_vol = float(self.lineEdit_3.text())
            want_A = float(self.lineEdit_6.text())
            want_B = float(self.lineEdit_7.text())
        except ValueError:
           self.label_6_txt = "错误:有输入框未输入数字,或输入了非数字字符!"
 
        if ( not self.label_6_txt ) and ( now_B_A and now_B_B ):
            try:
                vol,rst = self.lineEdit_3.text(),\
                        round(now_vol*( now_A_A/(now_A_A+now_A_B)-want_A/(want_A+want_B) ) / \
                        ( want_A/(want_A+want_B)-now_B_A/(now_B_A+now_B_B) ), 4)
            except ZeroDivisionError:
                self.label_6_txt = "错误:试图除零!"
            if rst != "" and rst > 0:
                rst = str(rst)
                self.label_6_txt = "须向 " + vol + " ML 现有溶液 A 中加入现有溶液 B " + rst + " ML"
            else:
                self.label_6_txt = "注意:现有溶液 A 和 B 不能配制出欲配溶液<p>"
                continue_com = 1
 
        if ( not self.label_6_txt ) or continue_com:
            if want_A*(now_A_A+now_A_B) == 0:
                self.label_6_txt = "错误:试图除零!"
            elif want_B != 0 and (now_A_B == 0 or now_A_A / now_A_B > want_A / want_B):
                vol,rst = self.lineEdit_3.text(),\
                        str(round(now_vol*now_A_A*(want_A+want_B)/(want_A*(now_A_A+now_A_B))-now_vol,4))
                self.label_6_txt += "须向 " + vol + " ML 现有溶液 A 中加入溶剂 B " + rst + " ML"
            elif want_B != 0 and now_A_B != 0 and now_A_A / now_A_B == want_A / want_B:
                self.label_6_txt = "现有溶液 A 和欲配溶液是同一种溶液,无须额外动作。"
            else:
                try:
                    vol,rst=self.lineEdit_3.text(),\
                            str(round(now_vol*now_A_B*(want_A+want_B)/(want_B*(now_A_A+now_A_B))-now_vol,4))
                    self.label_6_txt += "须向 " + vol + " ML 现有溶液 A 中加入溶剂 A " + rst + " ML"
                except ZeroDivisionError:
                    self.label_6_txt = "错误:试图除零!"
 
        self.label_6.setText(QtGui.QApplication.translate("mainWindow", self.label_6_txt, None, QtGui.QApplication.UnicodeUTF8))
 
 
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    win=Win()
    win.show()
    sys.exit(app.exec_())

ui_zh.py :

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
# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'snail.ui'
#
# Created: Wed Nov 11 21:15:36 2009
#      by: PyQt4 UI code generator 4.6.1
#
# WARNING! All changes made in this file will be lost!
 
from PyQt4 import QtCore, QtGui
 
class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.resize(872, 452)
        self.centralwidget = QtGui.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit_1 = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit_1.setGeometry(QtCore.QRect(250, 90, 171, 51))
        self.lineEdit_1.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.lineEdit_1.setObjectName("lineEdit_1")
        self.lineEdit_2 = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(460, 90, 171, 51))
        self.lineEdit_2.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_3 = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(670, 90, 161, 51))
        self.lineEdit_3.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.lineEdit_4 = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit_4.setGeometry(QtCore.QRect(250, 170, 171, 51))
        self.lineEdit_4.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.lineEdit_5 = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit_5.setGeometry(QtCore.QRect(460, 170, 171, 51))
        self.lineEdit_5.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.label = QtGui.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(280, 20, 131, 41))
        self.label.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\"; A")
        self.label.setObjectName("label")
        self.label_2 = QtGui.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(490, 20, 131, 41))
        self.label_2.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\"; A")
        self.label_2.setObjectName("label_2")
        self.label_3 = QtGui.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(710, 20, 131, 41))
        self.label_3.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\"; A")
        self.label_3.setObjectName("label_3")
        self.label_4 = QtGui.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(40, 100, 171, 41))
        self.label_4.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\"; A")
        self.label_4.setObjectName("label_4")
        self.label_5 = QtGui.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(40, 250, 171, 41))
        self.label_5.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\"; A")
        self.label_5.setObjectName("label_5")
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(670, 170, 161, 51))
        self.pushButton.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.pushButton.setObjectName("pushButton")
        self.frame = QtGui.QFrame(self.centralwidget)
        self.frame.setEnabled(True)
        self.frame.setGeometry(QtCore.QRect(40, 330, 791, 91))
        self.frame.setMouseTracking(False)
        self.frame.setAutoFillBackground(False)
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.label_6 = QtGui.QLabel(self.frame)
        self.label_6.setGeometry(QtCore.QRect(10, 10, 781, 71))
        self.label_6.setStyleSheet("""font: 22pt \"Bitstream Vera Sans Mono\"; color: rgb(0, 0, 255);""")
        self.label_6.setObjectName("label_6")
        self.label_7 = QtGui.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(40, 180, 171, 41))
        self.label_7.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\"; A")
        self.label_7.setObjectName("label_7")
        self.lineEdit_6 = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit_6.setGeometry(QtCore.QRect(250, 250, 171, 51))
        self.lineEdit_6.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.lineEdit_6.setObjectName("lineEdit_6")
        self.lineEdit_7 = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit_7.setGeometry(QtCore.QRect(460, 250, 171, 51))
        self.lineEdit_7.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.lineEdit_7.setObjectName("lineEdit_7")
        self.pushButton_2 = QtGui.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(670, 250, 161, 51))
        self.pushButton_2.setStyleSheet("font: 22pt \"Bitstream Vera Sans Mono\";")
        self.pushButton_2.setObjectName("pushButton_2")
        mainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(mainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 872, 25))
        self.menubar.setObjectName("menubar")
        mainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(mainWindow)
        self.statusbar.setObjectName("statusbar")
        mainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(mainWindow)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.label_6.clear)
        QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), mainWindow.close)
        QtCore.QMetaObject.connectSlotsByName(mainWindow)
 
    def retranslateUi(self, mainWindow):
        mainWindow.setWindowTitle(QtGui.QApplication.translate("mainWindow", " 溶剂比例计算器 - Snail", None, QtGui.QApplication.UnicodeUTF8))
        self.lineEdit_3.setText(QtGui.QApplication.translate("mainWindow", "1000", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("mainWindow", " 溶剂 A", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("mainWindow", " 溶剂 B", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("mainWindow", "体积", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("mainWindow", "现有溶液 A", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("mainWindow", "欲配溶液", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(QtGui.QApplication.translate("mainWindow", "计算", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("mainWindow", "欢迎使用溶剂比例计算器 Snail\nxiooli <xioooli@yahoo.com.cn>", None, QtGui.QApplication.UnicodeUTF8))
        self.label_7.setText(QtGui.QApplication.translate("mainWindow", "现有溶液 B", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton_2.setText(QtGui.QApplication.translate("mainWindow", "关闭", None, QtGui.QApplication.UnicodeUTF8))

Chemistry, Script , ,

本文的评论功能被关闭了.