zoukankan      html  css  js  c++  java
  • python计算器

    初学python,写个计算器作为练手项目。参考了网上很多朋友的代码,但觉得我写的是最为简单的,代码最为精简。

    #!/usr/bin/env python


    import math
    import sys
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import (QApplication, QGridLayout, QLayout,
        QLineEdit, QSizePolicy, QPushButton, QWidget)


    class Calculator(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('Calculator')
            self.resize(300,300)
            self.initUI()
            self.cline = ""

        def initUI(self):
            self.numLineEdit = QLineEdit()   #用QLineEdit定义一个输入框
            self.zeroButton = QPushButton('0')    #QPushButton定义各按键
            self.zeroButton.clicked.connect(self.zero)  #调用按键的槽函数
            self.oneButton = QPushButton('1')
            self.oneButton.clicked.connect(self.one)    
            self.twoButton = QPushButton('2')
            self.twoButton.clicked.connect(self.two)
            self.threeButton = QPushButton('3')
            self.threeButton.clicked.connect(self.three)
            self.fourButton = QPushButton('4')
            self.fourButton.clicked.connect(self.four)
            self.fiveButton = QPushButton('5')
            self.fiveButton.clicked.connect(self.five)
            self.sixButton = QPushButton('6')
            self.sixButton.clicked.connect(self.six)
            self.sevenButton = QPushButton('7')
            self.sevenButton.clicked.connect(self.seven)
            self.eightButton = QPushButton('8')
            self.eightButton.clicked.connect(self.eight)
            self.nineButton = QPushButton('9')
            self.nineButton.clicked.connect(self.nine)
            self.deleteButton = QPushButton('delete')
            self.deleteButton.clicked.connect(self.my_delete)
            self.CButton = QPushButton('C')
            self.CButton.clicked.connect(self.C)
            self.plusButton = QPushButton('+')
            self.plusButton.clicked.connect(self.plus)
            self.minusButton = QPushButton('-')
            self.minusButton.clicked.connect(self.minus)
            self.mutiplyButton = QPushButton('*')
            self.mutiplyButton.clicked.connect(self.mutiply)
            self.divideButton = QPushButton('/')
            self.divideButton.clicked.connect(self.divide)
            self.equalButton = QPushButton('=')
            self.equalButton.clicked.connect(self.equal)
            self.dotButton = QPushButton('.')
            self.dotButton.clicked.connect(self.dot)
            self.leftButton = QPushButton('(')
            self.leftButton.clicked.connect(self.left)
            self.rightButton = QPushButton(')')
            self.rightButton.clicked.connect(self.right)


            self.mainLayout = QGridLayout()    #用QGridLayout设置计算器的布局和各按键的位置
            self.mainLayout.addWidget(self.numLineEdit, 0, 0, 1, 4)
            self.mainLayout.addWidget(self.oneButton, 1, 0)
            self.mainLayout.addWidget(self.twoButton, 1, 1)
            self.mainLayout.addWidget(self.threeButton, 1, 2)
            self.mainLayout.addWidget(self.plusButton, 4, 1)
            self.mainLayout.addWidget(self.fourButton, 2, 0)
            self.mainLayout.addWidget(self.fiveButton, 2, 1)
            self.mainLayout.addWidget(self.sixButton, 2, 2)
            self.mainLayout.addWidget(self.minusButton, 4, 2)
            self.mainLayout.addWidget(self.sevenButton, 3, 0)
            self.mainLayout.addWidget(self.eightButton, 3, 1)
            self.mainLayout.addWidget(self.nineButton, 3, 2)
            self.mainLayout.addWidget(self.mutiplyButton, 4, 0)
            self.mainLayout.addWidget(self.zeroButton, 3, 3)
            self.mainLayout.addWidget(self.CButton, 1, 3)
            self.mainLayout.addWidget(self.deleteButton, 2, 3)
            self.mainLayout.addWidget(self.divideButton, 4, 3)
            self.mainLayout.addWidget(self.equalButton, 5, 3)
            self.mainLayout.addWidget(self.leftButton, 5, 0)
            self.mainLayout.addWidget(self.rightButton, 5, 1)
            self.mainLayout.addWidget(self.dotButton, 5, 2)

            self.setLayout(self.mainLayout)

        def C(self):                   #下面的都是槽函数,定义各个按键的功能
            self.cline = ''
            self.numLineEdit.setText(self.cline)

        def zero(self):
            self.cline = self.numLineEdit.text()
            if self.cline != '0':
                self.cline += "0"
                self.numLineEdit.setText(self.cline)

        def one(self):
            self.cline = self.numLineEdit.text()
            self.cline += '1'
            self.numLineEdit.setText(self.cline)

        def two(self):
            self.cline = self.numLineEdit.text()
            self.cline += '2'
            self.numLineEdit.setText(self.cline)

        def three(self):
            self.cline = self.numLineEdit.text()
            self.cline += '3'
            self.numLineEdit.setText(self.cline)

        def four(self):
            self.cline = self.numLineEdit.text()
            self.cline += '4'
            self.numLineEdit.setText(self.cline)

        def five(self):
            self.cline = self.numLineEdit.text()
            self.cline += '5'
            self.numLineEdit.setText(self.cline)

        def six(self):
            self.cline = self.numLineEdit.text()
            self.cline += '6'
            self.numLineEdit.setText(self.cline)

        def seven(self):
            self.cline = self.numLineEdit.text()
            self.cline += '7'
            self.numLineEdit.setText(self.cline)

        def eight(self):
            self.cline = self.numLineEdit.text()
            self.cline += '8'
            self.numLineEdit.setText(self.cline)

        def nine(self):
            self.cline = self.numLineEdit.text()
            self.cline += '9'
            self.numLineEdit.setText(self.cline)

        def dot(self):
            self.cline = self.numLineEdit.text()
            self.cline += '.'
            self.numLineEdit.setText(self.cline)

        def plus(self):
            self.cline = self.numLineEdit.text()
            self.cline += '+'
            self.numLineEdit.setText(self.cline)

        def minus(self):
            self.cline = self.numLineEdit.text()
            self.cline += '-'
            self.numLineEdit.setText(self.cline)

        def left(self):
            self.cline = self.numLineEdit.text()
            self.cline += '('
            self.numLineEdit.setText(self.cline)

        def right(self):
            self.cline = self.numLineEdit.text()
            self.cline += ')'
            self.numLineEdit.setText(self.cline)

        def mutiply(self):
            self.cline = self.numLineEdit.text()
            self.cline += '*'
            self.numLineEdit.setText(self.cline)

        def divide(self):
            self.cline = self.numLineEdit.text()
            self.cline += '/'
            self.numLineEdit.setText(self.cline)


        def my_delete(self):
            self.cline = self.numLineEdit.text()
            l = len(self.cline)
            self.cline = self.cline[0:l-1]
            self.numLineEdit.setText(self.cline)

        def equal(self):    #最终的计算用的是python自带的计算函数eval
            self.cline = self.numLineEdit.text()
            self.cline = str(eval(self.cline))
            self.numLineEdit.setText(self.cline)




    if __name__ == '__main__':
        app = QApplication(sys.argv)
        cal = Calculator()
        cal.show()
        app.exec_()

  • 相关阅读:
    mysql之存储过程
    Artificial Intelligence in Finance
    7 Exciting Uses of Machine Learning in FinTech
    Machine Learning in Finance – Present and Future Applications
    AI AND THE BOTTOM LINE: 15 EXAMPLES OF ARTIFICIAL INTELLIGENCE IN FINANCE
    5 Ways AI is Transforming the Finance Industry
    图学Kubernetes
    Free Professional Resume Examples and Writing Tips
    npm和yarn的淘宝镜像添加
    世界最具影响力的十大管理大师
  • 原文地址:https://www.cnblogs.com/valon/p/6944344.html
Copyright © 2011-2022 走看看