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 - - - - - - - - 0 - 0 - 334 - 23 - - - - - - - 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