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 查询技巧
    如何查看mysql索引
    windows下安装redis以及简单的事例
    Buildroot make网卡interfaces文件被修改
    VirtualBox只能生成32位虚拟机
    python-websocket-server hacking
    crontab定时任务
    Linux修改串口irq
    emmc boot_config文件不存在
    /dev/mem直接操作硬件寄存器
  • 原文地址:https://www.cnblogs.com/valon/p/6944344.html
Copyright © 2011-2022 走看看