diff --git a/2017_3_30/calculator.py b/2017_3_30/calculator.py
deleted file mode 100644
index a2dfefae61fbc84dba3104befa5cf116d23e3247..0000000000000000000000000000000000000000
--- a/2017_3_30/calculator.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import sys
-from PyQt5 import uic
-from PyQt5.QtWidgets import QApplication,QMainWindow
-
-
-
-class Calc(QMainWindow):
- def __init__(self):
- QMainWindow.__init__(self)
- uic.loadUi('calculator.ui',self)
-
-
-if __name__ == '__main__':
- app = QApplication(['calculator.py'])
- calc = Calc()
- calc.show()
- app.exec_()
\ No newline at end of file
diff --git a/2017_3_30/calculator.ui b/2017_3_30/calculator.ui
deleted file mode 100644
index 7df6de973f926a192133b8b68064ec2d5ea1ccba..0000000000000000000000000000000000000000
--- a/2017_3_30/calculator.ui
+++ /dev/null
@@ -1,631 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 334
- 314
-
-
-
-
- 10
- 0
-
-
-
-
- 800
- 800
-
-
-
- MainWindow
-
-
-
-
-
- 50
- 170
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 1
-
-
-
- 50
- 50
-
-
-
-
-
-
- 100
- 170
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
-
- 50
- 50
-
-
-
-
- 50
- 50
-
-
-
- 2
-
-
-
- 50
- 50
-
-
-
-
-
-
- 150
- 170
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 3
-
-
-
- 50
- 50
-
-
-
-
-
-
- 50
- 120
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 4
-
-
-
- 50
- 50
-
-
-
-
-
-
- 100
- 120
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 5
-
-
-
- 50
- 50
-
-
-
-
-
-
- 150
- 120
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 6
-
-
-
- 50
- 50
-
-
-
-
-
-
- 50
- 70
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 7
-
-
-
- 50
- 50
-
-
-
-
-
-
- 100
- 70
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 8
-
-
-
- 50
- 50
-
-
-
-
-
-
- 150
- 70
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- 9
-
-
-
- 50
- 50
-
-
-
-
-
-
- 50
- 220
- 91
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 800
- 800
-
-
-
- 0
-
-
-
- 50
- 50
-
-
-
-
-
-
- 150
- 220
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- .
-
-
-
- 50
- 50
-
-
-
-
-
-
- 200
- 220
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- +
-
-
-
- 50
- 50
-
-
-
-
-
-
- 200
- 170
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- -
-
-
-
- 50
- 50
-
-
-
-
-
-
- 200
- 120
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- *
-
-
-
- 50
- 50
-
-
-
-
-
-
- 200
- 70
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- /
-
-
-
- 50
- 50
-
-
-
-
-
-
- 250
- 170
- 41
- 91
-
-
-
-
- 10
- 10
-
-
-
-
- 100
- 100
-
-
-
- =
-
-
-
- 50
- 50
-
-
-
-
-
-
- 250
- 120
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- %
-
-
-
- 50
- 50
-
-
-
-
-
-
- 250
- 70
- 41
- 41
-
-
-
-
- 10
- 10
-
-
-
-
- 50
- 50
-
-
-
- C
-
-
-
- 50
- 50
-
-
-
-
-
-
- 50
- 20
- 241
- 51
-
-
-
-
-
-
-
-
- 800
- 800
-
-
-
-
-
-
-
diff --git a/calc.py b/calc.py
index b9ecbd51f819d75746ebc3f9306ddc480704233e..ba47bd303fe8acf7dab4622f2b600472d3586702 100644
--- a/calc.py
+++ b/calc.py
@@ -1,23 +1,183 @@
+# coding:utf-8
import sys
from PyQt5 import uic
-from PyQt5.QtWidgets import QApplication
+from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QMainWindow
+
class Calc(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
- uic.loadUi('calc.ui',self)
+ self.x = None # 操作数
+ self.y = None # 被操作数
+ self.operator = None # 操作符
+ self.do_result = None # 计算结果
+
+ uic.loadUi('calc.ui', self) # ui动作识别
+ btns = [
+ self.pushButton0,
+ self.pushButton1,
+ self.pushButton2,
+ self.pushButton3,
+ self.pushButton4,
+ self.pushButton5,
+ self.pushButton6,
+ self.pushButton7,
+ self.pushButton8,
+ self.pushButton9,
+ self.pushButton_clear,
+ self.pushButton_add,
+ self.pushButton_sub,
+ self.pushButton_div,
+ self.pushButton_mul,
+ self.pushButton_dot,
+ self.pushButton_equal
+ ]
+ for btn in btns:
+ btn.clicked.connect(self.click_on_button)
+ def click_on_button(self):
+ """主要思想:
+ 每次点击按钮时,
+ 先判断结果是否有值,
+ 再判断y是否有值
+ 再判断运算符是否有值
+ 再判断x是否有值
+ """
+ value = self.sender().text()
+ if value in "0123456789":
+ print "点击按钮前:", self.x, self.operator, self.y, self.do_result
+ if self.do_result: # 判断结果如果有值
+ self.x = value
+ self.text_result.setText(self.x)
+ self.do_result = None
+ self.operator = None
+ self.y = None
+ elif self.y: # 结果没有值时,判断y是如果有值
+ self.y += value
+ self.text_result.setText(self.y)
+ elif self.operator: # y如果没有有值,判断operator如果有值
+ self.y = value
+ self.text_result.setText(self.y)
+ elif self.x: # 运算符如果没有,判断x如果有值
+ self.x += value
+ self.text_result.setText(self.x)
+ else: # x如果没有值
+ self.x = value
+ self.text_result.setText(self.x)
+ print "点击按钮后:", self.x, self.operator, self.y, self.do_result
+ elif value in "+-*/":
+ print "点击按钮前:", self.x, self.operator, self.y, self.do_result
+ if self.do_result: # 判断结果如果有值
+ self.x = self.do_result
+ self.operator = value
+ self.text_result.setText(self.operator)
+ self.do_result = None
+ self.y = None
+ elif self.y: # y如果没有有值,判断operator如果有值
+ s = "%s%s%s" % (self.x, self.operator, self.y)
+ if float(self.y) == 0.0 and self.operator == '/': #运算符是除法,除数为0时
+ self.text_result.setText('除数不能为0')
+ self.x = None
+ self.y = None
+ self.operator = None
+ self.do_result = None
+ else:
+ self.do_result = str(eval(s))
+ self.text_result.setText(self.do_result)
+ self.x = self.do_result
+ self.y = None
+ self.operator = value
+ self.do_result = None
+ elif self.x: # 运算符如果没有,判断x如果有值
+ self.operator = value
+ self.text_result.setText(self.operator)
+ else: # x如果没有值
+ self.x = '0'
+ self.operator = value
+ self.text_result.setText(self.operator)
+ print "点击按钮后:", self.x, self.operator, self.y, self.do_result
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- print help(QApplication)
- calc = Calc()
- calc.show()
- app.exec_()
+ elif value in '=':
+ if self.do_result:
+ self.x = self.do_result
+ s = "%s%s%s" % (self.x, self.operator, self.y)
+ if float(self.y) == 0.0 and self.operator == '/': #运算符是除法,除数为0时
+ self.text_result.setText('除数不能为0')
+ self.x = None
+ self.y = None
+ self.operator = None
+ self.do_result = None
+ else:
+ self.do_result = str(eval(s))
+ self.text_result.setText(self.do_result)
+ elif self.y:
+ s = "%s%s%s" % (self.x, self.operator, self.y)
+ if float(self.y) == 0.0 and self.operator == '/': #运算符是除法,除数为0时
+ self.text_result.setText('除数不能为0')
+ self.x = None
+ self.y = None
+ self.operator = None
+ self.do_result = None
+ else:
+ self.do_result = str(eval(s))
+ self.text_result.setText(self.do_result)
+ elif self.operator:
+ self.y = self.x
+ s = "%s%s%s" % (self.x, self.operator, self.y)
+ if float(self.y) == 0.0 and self.operator == '/': #运算符是除法,除数为0时
+ self.text_result.setText('除数不能为0')
+ self.x = None
+ self.y = None
+ self.operator = None
+ self.do_result = None
+ else:
+ self.do_result = str(eval(s))
+ self.text_result.setText(self.do_result)
+ elif self.x:
+ self.text_result.setText(self.x)
+ elif value in 'C':
+ self.x = None # 操作数
+ self.y = None # 被操作数
+ self.operator = None # 操作符
+ self.do_result = None # 计算结果
+ self.text_result.setText('0')
+ elif value in '.':
+ if self.do_result:
+ self.x = '0.'
+ self.do_result = None
+ self.y = None
+ self.operator = None
+ self.text_result.setText(self.x)
+ elif self.y:
+ if '.' in self.y:
+ pass
+ else:
+ self.y += value
+ self.text_result.setText(self.y)
+ elif self.operator:
+ self.y = '0.'
+ self.text_result.setText(self.y)
+ elif self.x:
+ if '.' in self.x:
+ pass
+ else:
+ self.x += value
+ self.text_result.setText(self.x)
+ else:
+ self.x = '0.'
+ self.text_result.setText(self.x)
+if __name__ == '__main__':
+ try:
+ app = QApplication(sys.argv)
+ calc = Calc()
+ calc.show()
+ app.exec_()
+ except Exception, e:
+ print e
diff --git a/calc.ui b/calc.ui
index 5b653a6f94f351a367f92f37dc3e259e151999c6..386a9de2d7a3c31c2c59f432e0486feef275dfff 100644
--- a/calc.ui
+++ b/calc.ui
@@ -232,7 +232,7 @@
.
-
+
150
@@ -252,7 +252,7 @@
+
-
+
150
@@ -272,7 +272,7 @@
-
-
+
150
@@ -292,7 +292,7 @@
*
-
+
150
@@ -372,25 +372,42 @@
0
-
-
- false
-
+
- 0
+ 10
0
- 241
+ 231
41
- 15
- 75
- true
+ Aharoni
+ 20
+ 9
+ false
+ false
+
+ Qt::RightToLeft
+
+
+ border-color: rgb(255, 34, 104);
+font: 75 20pt "Aharoni";
+color: rgb(85, 0, 255);
+
+
+border-top-color: rgb(0, 85, 255);
+background-color: rgb(255, 255, 255);
+
+
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
diff --git "a/\350\256\241\347\256\227\345\231\250.xmind" "b/\350\256\241\347\256\227\345\231\250.xmind"
new file mode 100644
index 0000000000000000000000000000000000000000..00b6e312d7f160403042fd1bce5dad9d3d250369
Binary files /dev/null and "b/\350\256\241\347\256\227\345\231\250.xmind" differ