diff --git a/calc.py b/calc.py index aa11120bf9a8af9acd66a9a155a999a31856b9f6..e15ad9f7f511d856d657f689f4ebbcc90c53c34a 100644 --- a/calc.py +++ b/calc.py @@ -1,71 +1,110 @@ -#coding:utf-8 +# 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.pushButton0.clicked.connect(self.a) - self.pushButton1.clicked.connect(self.b) - self.pushButton2.clicked.connect(self.c) - self.pushButton3.clicked.connect(self.d) - self.pushButton4.clicked.connect(self.e) - self.pushButton5.clicked.connect(self.f) - self.pushButton6.clicked.connect(self.g) - self.pushButton7.clicked.connect(self.h) - self.pushButton8.clicked.connect(self.k) - self.pushButton9.clicked.connect(self.m) - self.pushButton_clear.clicked.connect(self.calc_clear) - self.pushButton_add.clicked.connect(self.calc_add) - self.pushButton_sub.clicked.connect(self.calc_sub) - self.pushButton_div.clicked.connect(self.calc_div) - self.pushButton_mul.clicked.connect(self.calc_mul) - self.pushButton_dot.clicked.connect(self.calc_dot) - self.pushButton_equal.clicked.connect(self.calc_equal) - - def a(self): - print '我被点击了0' - def b(self): - print '我被点击了1' - def c(self): - print '我被点击了2' - def d(self): - print '我被点击了3' - def e(self): - print '我被点击了4' - def f(self): - print '我被点击了5' - def g(self): - print '我被点击了6' - def h(self): - print '我被点击了7' - def k(self): - print '我被点击了8' - def m(self): - print '我被点击了9' - def calc_add(self): - print '我被点击了add====' - def calc_sub(self): - print '我被点击了sub====' - def calc_div(self): - print '我被点击了div===' - def calc_mul(self): - print '我被点击了mul===' - def calc_equal(self): - print '我被点击了equal===' - def calc_dot(self): - print '我被点击了dot===' - def calc_clear(self): - print '我被点击了clear===' -if __name__ == '__main__': - app = QApplication(sys.argv) - calc = Calc() - calc.show() - app.exec_() + self.x = None + self.y = None + self.result = None + self.operator = None + self.equal = None + + + uic.loadUi('calc.ui', self) + 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 + ] + map(lambda btn: btn.clicked.connect(self.click_on_button), btns) + + def calculate(self): + """ + 如果x、y、operater不为空,计算结果。 + """ + if self.x and self.y and self.operator: + s = "%s%s%s"%(self.x,self.operator,self.y) + print s + self.result = str(eval(s)) + self.text_result.setText(self.result) + def click_on_button(self): + print "点击按钮前:" ,self.x,self.operator,self.y + value = self.sender().text() + + # 如果点击的是数字,print该数字 + if value in "0123456789.": + print "您点击的数字是:",value + try: + if self.operator is None: + # 如果点击的是数字的话,保存到x或追加到x + if self.x is None: + self.x = value + else: + self.x +=value + self.text_result.setText(self.x) + else: + if self.y is None: + self.y = value + else: + self.y +=value + self.text_result.setText(self.y) + except Exception, e: + print e + + + #如果点击的是运算符,print该运算符 + elif value in "+-*/": + print "print该运算符是:",value + self.operator = value + self.text_result.setText("") + + # 如果点击的是=,print = + + elif value == '=': + print "您点击的是=。" + self.calculate() + self.text_result.setText(self.result) + + + # 若果点击的是clear,执行clear()方法 + else: + print "您点击的是C" + self.clear() + print "点击按钮后:" ,self.x,self.operator,self.y + + def clear(self): + self.x = None + self.y = None + self.result = None + self.operator = None + self.text_result.setText("") + +if __name__ == '__main__': + app = QApplication(sys.argv) + calc = Calc() + calc.show() + app.exec_() diff --git a/calc.ui b/calc.ui index 69d1b645a96260523bfc75d47a19598889e9678e..7c1fcb80c507df0513db0e519776243b19b0e097 100644 --- a/calc.ui +++ b/calc.ui @@ -372,10 +372,7 @@ 0 - - - false - + 0 @@ -384,12 +381,18 @@ 41 - - - 15 - 75 - true - + + border:2px solid #676767; +font-size:28px; + + + 0 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + Qt::LinksAccessibleByMouse|Qt::TextEditable|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse