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_()

  • 相关阅读:
    JDBC值事务
    JDBC之存储过程
    2016年计划要看的书,收集来自爱学习爱阅读的精英们
    step by step设置postgresql用户密码并配置远程连接
    在CentOS上搭建svn服务器及注意事项
    我为儿子开发的第一款Android App,用于九九乘法练习
    C语言实现九九乘法口诀表
    selenium-自动化测试51job网站(MacOS + Safari)2020年10月6日
    Oracle中row_number()、rank()、dense_rank() 的区别
    SQL错题集
  • 原文地址:https://www.cnblogs.com/valon/p/6944344.html
Copyright © 2011-2022 走看看