python做计算器,仅需输出代码!

实现一个简易的计算器,要求如下:1、能实现两个数字之间的加减乘除;2、能查看之前的计算结果,每次只能查看最近一次的计算结果(能查看最近五次的结果,后计算的结果先查看);3、能把十进制数字转换成16进制,8进制,二进制;4、输入和输出界面设计美观合理,变量和函数等设计合理。只输出代码


#coding=utf-8
from __future__ import division
import sys

from PyQt4 import QtGui, QtCore

########################################################################
class Example(QtGui.QWidget):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        super(Example, self).__init__()

        self.initUI_basic()


    #----------------------------------------------------------------------
    def initUI_basic(self):
        """"""
        
        self.point = 0
        self.flag = 0
        self.flag_equ = 0
        self.flag_add = 0 #加
        self.flag_sub = 0 #减
        self.flag_mul = 0 #乘
        self.flag_div = 0 #除
        self.flag_flag = ''

        self.num_1 = '0'
        self.num_2 = ''
        self.num_3 = ''
        
        
        #-------------------------------------------------------------------------
        exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        #exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(QtGui.qApp.quit)
        
        aboutAction = QtGui.QAction(QtGui.QIcon(''), '&About', self)
        aboutAction.triggered.connect(self.OnAboutButton)
        
        menubar = QtGui.QMenuBar()
        
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)
        
        aboutMenu = menubar.addMenu('&About')
        aboutMenu.addAction(aboutAction)
        
        #----------------------------------------------------------------------
        global lcd
        lcd = QtGui.QTextBrowser()
        lcd.setFixedHeight(190)
        lcd.setFont(QtGui.QFont("Microsoft YaHei", 20))
        
        #lcd.setFixedWidth(100)
        lcd.setText('0'.decode('utf-8'))
        grid = QtGui.QGridLayout()
        self.setLayout(grid)
        #self.setMinimumSize(300, 300)
        #self.setMaximumSize(300, 300)
        #self.setGeometry( 200, 100, 200, 200 )
        grid.setSpacing(0)
        grid.addWidget(menubar, self.point, 0, 1, 4)
        grid.addWidget(lcd, self.point+1, 0, 1, 4)
        
        
        #----------------------------------------------------------------------
        button_1 = QtGui.QPushButton('1')
        button_2 = QtGui.QPushButton('2')
        button_3 = QtGui.QPushButton('3')
        button_4 = QtGui.QPushButton('4')
        button_5 = QtGui.QPushButton('5')
        button_6 = QtGui.QPushButton('6')
        button_7 = QtGui.QPushButton('7')
        button_8 = QtGui.QPushButton('8')
        button_9 = QtGui.QPushButton('9')
        button_0 = QtGui.QPushButton('0')
        button_dot = QtGui.QPushButton('.')
        button_equ = QtGui.QPushButton('=')
        button_div = QtGui.QPushButton('/')
        button_mul = QtGui.QPushButton('*')
        button_add = QtGui.QPushButton('+')
        button_sub = QtGui.QPushButton('-')
        button_cls = QtGui.QPushButton('cls')
        
        button_0.setFixedSize(50, 50)
        button_1.setFixedSize(50, 50)
        button_2.setFixedSize(50, 50)
        button_3.setFixedSize(50, 50)
        button_4.setFixedSize(50, 50)
        button_5.setFixedSize(50, 50)
        button_6.setFixedSize(50, 50)
        button_7.setFixedSize(50, 50)
        button_8.setFixedSize(50, 50)
        button_9.setFixedSize(50, 50)
        button_dot.setFixedSize(50, 50)
        button_equ.setFixedSize(200, 50)
        button_div.setFixedSize(50, 50)
        button_mul.setFixedSize(50, 50)
        button_add.setFixedSize(50, 50)
        button_sub.setFixedSize(50, 50)
        button_cls.setFixedSize(50, 50)
        
        button_0.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_1.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_2.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_3.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_4.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_5.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_6.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_7.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_8.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_9.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_dot.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_equ.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_div.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_mul.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_add.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_sub.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_cls.setFont(QtGui.QFont("Microsoft YaHei", 16))
        

        grid.addWidget(button_7, self.point+2,0)
        grid.addWidget(button_8, self.point+2,1)
        grid.addWidget(button_9, self.point+2,2)
        grid.addWidget(button_div, self.point+2,3)
        grid.addWidget(button_4, self.point+3,0)
        grid.addWidget(button_5, self.point+3,1)
        grid.addWidget(button_6, self.point+3,2)
        grid.addWidget(button_mul, self.point+3,3)
        grid.addWidget(button_1, self.point+4,0)
        grid.addWidget(button_2, self.point+4,1)
        grid.addWidget(button_3, self.point+4,2)
        grid.addWidget(button_sub, self.point+4,3)
        grid.addWidget(button_0, self.point+5,0)
        grid.addWidget(button_dot, self.point+5,1)
        grid.addWidget(button_cls, self.point+5,2)
        grid.addWidget(button_add, self.point+5,3)
        grid.addWidget(button_equ, self.point+6, 0, 1, 4)

        self.move(300, 400)
        self.setWindowTitle('Calculator')
        grid.setSizeConstraint(QtGui.QLayout.SetFixedSize)
        self.show()

        self.connect(button_0,QtCore.SIGNAL('clicked()'),self.func_button_0)
        self.connect(button_1,QtCore.SIGNAL('clicked()'),self.func_button_1)
        self.connect(button_2,QtCore.SIGNAL('clicked()'),self.func_button_2)
        self.connect(button_3,QtCore.SIGNAL('clicked()'),self.func_button_3)
        self.connect(button_4,QtCore.SIGNAL('clicked()'),self.func_button_4)
        self.connect(button_5,QtCore.SIGNAL('clicked()'),self.func_button_5)
        self.connect(button_6,QtCore.SIGNAL('clicked()'),self.func_button_6)
        self.connect(button_7,QtCore.SIGNAL('clicked()'),self.func_button_7)
        self.connect(button_8,QtCore.SIGNAL('clicked()'),self.func_button_8)
        self.connect(button_9,QtCore.SIGNAL('clicked()'),self.func_button_9)

        self.connect(button_cls,QtCore.SIGNAL('clicked()'),self.func_button_cls)
        self.connect(button_dot,QtCore.SIGNAL('clicked()'),self.func_button_dot)

        self.connect(button_add,QtCore.SIGNAL('clicked()'),self.func_button_add)
        self.connect(button_sub,QtCore.SIGNAL('clicked()'),self.func_button_sub)
        self.connect(button_mul,QtCore.SIGNAL('clicked()'),self.func_button_mul)
        self.connect(button_div,QtCore.SIGNAL('clicked()'),self.func_button_div)

        self.connect(button_equ,QtCore.SIGNAL('clicked()'),self.func_button_equ)

        #self.statusBar().showMessage('Ready')
        
    #----------------------------------------------------------------------
    def OnAboutButton( self ):
        QtGui.QMessageBox.about( self, 'About', "A Calculator!" )
    
         
    #----------------------------------------------------------------------
    def keyPressEvent(self, event):
        """"""
        if event.key() == QtCore.Qt.Key_Escape:
            self.close()
            
        if event.key() == QtCore.Qt.Key_0:
            self.func_button_0()
            
        if event.key() == QtCore.Qt.Key_1:
            self.func_button_1()
        
        if event.key() == QtCore.Qt.Key_2:
            self.func_button_2()
                    
        if event.key() == QtCore.Qt.Key_3:
            self.func_button_3()

        if event.key() == QtCore.Qt.Key_4:
            self.func_button_4()

        if event.key() == QtCore.Qt.Key_5:
                    self.func_button_5()
        
        if event.key() == QtCore.Qt.Key_6:
            self.func_button_6()
                            
        if event.key() == QtCore.Qt.Key_7:
            self.func_button_7()

        if event.key() == QtCore.Qt.Key_8:
            self.func_button_8()

        if event.key() == QtCore.Qt.Key_9:
            self.func_button_9()

        if event.key() == QtCore.Qt.Key_Period:
            self.func_button_dot()        
    
        if event.key() == QtCore.Qt.Key_Enter:
            self.func_button_equ()

        if event.key() == QtCore.Qt.Key_Plus:
            self.func_button_add()
                    
        if event.key() == QtCore.Qt.Key_Minus:
            self.func_button_sub()
        
        if event.key() == QtCore.Qt.Key_Asterisk:
            self.func_button_mul()          
                    
        if event.key() == QtCore.Qt.Key_Slash:
            self.func_button_div()
            
        if event.key() == QtCore.Qt.Key_C:
            self.func_button_cls()

    #----------------------------------------------------------------------
    def func_button_0(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0': #防止在QLineEdit里连续出现 0 ,比如 000.1
                    self.num_1 = '0'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1+'0'
                    lcd.setText(self.num_1)
            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '0'
                else:
                    self.num_2 = self.num_2+'0'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1 #Important:点击等号之后,除clear按键以外的按键都失效,用pass代替也可以,这里只是为了方便以后添加更多功能所以用了flag

    #----------------------------------------------------------------------
    def func_button_1(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '1'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '1'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '1'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '1'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_2(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '2'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '2'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '2'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '2'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_3(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '3'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '3'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '3'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '3'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_4(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '4'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '4'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '4'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '4'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_5(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '5'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '5'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '3'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '5'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_6(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '6'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '6'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '6'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '6'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1


    #----------------------------------------------------------------------
    def func_button_7(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '7'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '7'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '7'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '7'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_8(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '8'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '8'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '8'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '8'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_9(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '9'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 + '9'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '9'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                else:
                    self.num_2 = self.num_2 + '9'
                    lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_dot(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:

                if '.' not in self.num_1:

                    if self.num_1 == '0':
                        self.num_1 = '0.'
                        print self.num_1
                        lcd.setText(self.num_1)
                    else:
                        self.num_1 = self.num_1 + '.'
                        lcd.setText(self.num_1)

            else:
                if '.' not in self.num_2:

                    if self.num_2 == '':
                        self.num_2 = '0.'
                        lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
                    else:
                        self.num_2 = self.num_2 + '.'
                        lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_cls(self):
        """"""
        self.num_1 = '0'
        self.num_2 = ''
        self.flag = 0
        self.flag_equ = 0
        self.flag_add = 0
        self.flag_sub = 0
        self.flag_mul = 0
        self.flag_div = 0
        lcd.setText(self.num_1)

    #----------------------------------------------------------------------
    def func_button_add(self):
        """"""
        if self.flag == 0:
            self.flag = 1
            self.flag_add = 1
            self.flag_sub = 0
            self.flag_mul = 0
            self.flag_div = 0
            self.flag_flag = '+'
            lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else:
            pass

    #----------------------------------------------------------------------
    def func_button_sub(self):
        """"""
        if self.flag == 0:
            if self.num_1 == '0':
                self.num_1 = '-'
                lcd.setText(self.num_1)

            #elif self.num_2 == '':
                #self.num_2 = '-'
                #lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)

            else:
                self.flag = 1
                self.flag_add = 0
                self.flag_sub = 1
                self.flag_mul = 0
                self.flag_div = 0
                self.flag_flag = '-'

                lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else:
            if self.num_2 == '':
                self.num_2 = '-'
                lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)

    #----------------------------------------------------------------------
    def func_button_mul(self):
        """"""
        if self.flag == 0:

            self.flag = 1
            self.flag_add = 0
            self.flag_sub = 0
            self.flag_mul = 1
            self.flag_div = 0
            self.flag_flag = '*'

            lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else:
            pass

    #----------------------------------------------------------------------
    def func_button_div(self):
        """"""
        if self.flag == 0:
            self.flag = 1
            self.flag_add = 0
            self.flag_sub = 0
            self.flag_mul = 0
            self.flag_div = 1
            self.flag_flag = '/'

            lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2)
        else:
            pass

    #----------------------------------------------------------------------
    def func_button_equ(self):
        """"""
        if self.flag == 1:
            if self.flag_flag == '+':

                if '.' in self.num_1:
                    self.num_3 = str(float(self.num_1) + float(self.num_2))

                if '.' not in self.num_1:
                    if '.' not in self.num_2:
                        self.num_3 = str(int(self.num_1) + int(self.num_2))

                    elif '.' in self.num_2:
                        self.num_3 = str(float(self.num_1) + float(self.num_2))

                    else:
                        self.num_3 = str(int(self.num_1) + int(self.num_2))

                lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2 + '\n=\n' + self.num_3)
                self.flag = 0
                self.num_1 = '0'
                self.num_2 = ''
                self.num_3 = ''

            elif self.flag_flag == '-':

                if '.' in self.num_1:
                    self.num_3 = str(float(self.num_1) - float(self.num_2))

                if '.' not in self.num_1:
                    if '.' not in self.num_2:
                        self.num_3 = str(int(self.num_1) - int(self.num_2))

                    elif '.' in self.num_2:
                        self.num_3 = str(float(self.num_1) - float(self.num_2))

                    else:
                        self.num_3 = str(int(self.num_1) - int(self.num_2))

                lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2 + '\n=\n' + self.num_3)
                self.flag = 0
                self.num_1 = '0'
                self.num_2 = ''
                self.num_3 = ''            


            elif self.flag_flag == '*':

                if '.' in self.num_1:
                    self.num_3 = str(float(self.num_1) * float(self.num_2))

                if '.' not in self.num_1:
                    if '.' not in self.num_2:
                        self.num_3 = str(int(self.num_1) * int(self.num_2))

                    elif '.' in self.num_2:
                        self.num_3 = str(float(self.num_1) * float(self.num_2))

                    else:
                        self.num_3 = str(int(self.num_1) * int(self.num_2))

                lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2 + '\n=\n' + self.num_3)
                self.flag = 0
                self.num_1 = '0'
                self.num_2 = ''
                self.num_3 = ''

            elif self.flag_flag == '/':

                if self.num_2 == '0':
                    lcd.setText("0不能作为除数!".decode('utf-8'))
                    self.flag = 0
                    self.num_1 = '0'
                    self.num_2 = ''
                    self.num_3 = ''

                else:
                    self.num_3 = float(self.num_1) / float(self.num_2)

                    if (self.num_3 * 10) % 10 == 0:
                        lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2 + '\n=\n' + str(int(self.num_3)))

                        self.flag = 0
                        self.num_1 = '0'
                        self.num_2 = ''
                        self.num_3 = ''
                    else:
                        lcd.setText(self.num_1 + '\n' + self.flag_flag + '\n' + self.num_2 + '\n=\n' + str(float(self.num_3)))

                        self.flag = 0
                        self.num_1 = '0'
                        self.num_2 = ''
                        self.num_3 = ''                        

        else:
            pass


#----------------------------------------------------------------------
def main():
    """"""
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

PyQt4写的

#  *_* coding:utf8 *_*
import tkinter
from functools import partial

results = []
index = 0
# 按钮输入调用
def get_input(entry, entry1, text, argu):
    # 从entry窗口展示中获取输入的内容
    input_data = entry.get()
    input_data1 = entry1.get()
 
    # 出现连续+,则第二个+为无效输入,不做任何处理
    if (input_data1[-1:] == '+') and (argu == '+'):
        return
    # 出现连续+--,则第三个-为无效输入,不做任何处理
    if (input_data1[-2:] == '+-') and (argu == '-'):
        return
    # 窗口已经有--后面字符不能为+或-
    if (input_data1[-2:] == '--') and (argu in ['-', '+']):
        return
    # 窗口已经有 ** 后面字符不能为 * 或 /
    if ((input_data1[-2:] == '**') or (len(input_data1)==0 and len(input_data)==0)) and (argu in ['*', '/']):
        return
    if argu in ['-', '+', '*', '/'] and (input_data1[-1:] not in ['-', '+', '*', '/'] or len(input_data)>0):
        entry1.insert("end", input_data)
        entry.delete(0, "end")
        text.delete(0.0, tkinter.END)
        entry1.insert("end", argu)
    else:
        entry.insert("end", argu)
        show_text(text, entry.get())

def show_text(text, argu):
    text.delete(0.0, tkinter.END)
    decstr = 'DEC:'+argu
    hexstr = 'HEX:'+hex(int(argu))[2:]
    octstr = 'OCT:'+oct(int(argu))[2:]
    binstr = 'BIN:'+bin(int(argu))[2:]
    text.insert(tkinter.INSERT, decstr+'\n')
    text.insert(tkinter.INSERT, hexstr+'\n')
    text.insert(tkinter.INSERT, octstr+'\n')
    text.insert(tkinter.INSERT, binstr)
 
# 退格(撤销输入)
def backspace(entry, text):
    input_len = len(entry.get())
    # 删除entry窗口中最后的字符
    entry.delete(input_len - 1)
 
# 清空entry内容(清空窗口)
def clear(entry, entry1, text):
    entry.delete(0, "end")
    entry1.delete(0, "end")
    text.delete(0.0, tkinter.END)

def last(entry, text):
    global results,index
    if len(results)>0:
        entry.delete(0, "end")
        index = index-1 if index>0 else 0
        entry.insert("end", results[index])
        show_text(text, entry.get())

def next(entry, text):
    global results,index
    if len(results)>0:
        entry.delete(0, "end")
        index = index+1 if index<len(results)-1 else len(results)-1
        entry.insert("end", results[index])
        show_text(text, entry.get())

 
# 计算
def calc(entry, entry1, text):
    global results,index
    entry1.insert("end", entry.get())
    input_data = entry1.get()
    # 计算前判断输入内容是否为空;首字符不能为*/;*/不能连续出现3次;
    if not input_data:
        return
 
    clear(entry, entry1, text)
 
    # 异常捕获,在进行数据运算时如果出现异常进行相应处理
    # noinspection PyBroadException
    try:
        # eval() 函数用来执行一个字符串表达式,并返回表达式的值;并将执行结果转换为字符串
        output_data = str(eval(input_data))
    except Exception:
        # 将提示信息输出到窗口
        entry.insert("end", "Calculation error")
    else:
        # 将计算结果显示在窗口中
        if len(output_data) > 20:
            entry.insert("end", "Value overflow")
        else:
            entry.insert("end", output_data)
            show_text(text, output_data)
            if len(results)==5:
                results.pop(0)
            results.append(output_data)
            index = len(results)-1
                

def place_button(text, func, func_params, bg='pink', **place_params):
    my_button = partial(tkinter.Button, root, bg=button_bg, padx=10, pady=3, activebackground=button_active_bg)
    button = my_button(text=text, bg=bg, command=lambda: func(*func_params))
    button.grid(**place_params)
 
if __name__ == '__main__':
 
    root = tkinter.Tk()
    root.title("Yummy")
    root.resizable(0, 0)
 
    button_bg = 'pink'
    math_sign_bg = 'DarkTurquoise'
    cal_output_bg = 'Yellow'
    button_active_bg = 'gray'
    
    entry = tkinter.Entry(root, justify="right", font=1)
    entry.grid(row=1, column=0, columnspan=4, padx=10, pady=10)
    entry1 = tkinter.Entry(root, justify="right", font=1)
    entry1.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
    text = tkinter.Text(root,width=20, height=4, font=1)
    text.grid(row=2, column=0, columnspan=4, padx=10, pady=10)
    # 文本输入类按钮
    place_button('1', get_input, (entry, entry1, text, '1'), row=3, column=0, ipadx=5, pady=5)
    place_button('2', get_input, (entry, entry1, text, '2'), row=3, column=1, ipadx=5, pady=5)
    place_button('3', get_input, (entry, entry1, text, '3'), row=3, column=2, ipadx=5, pady=5)
    place_button('4', get_input, (entry, entry1, text, '4'), row=4, column=0, ipadx=5, pady=5)
    place_button('5', get_input, (entry, entry1, text, '5'), row=4, column=1, ipadx=5, pady=5)
    place_button('6', get_input, (entry, entry1, text, '6'), row=4, column=2, ipadx=5, pady=5)
    place_button('7', get_input, (entry, entry1, text, '7'), row=5, column=0, ipadx=5, pady=5)
    place_button('8', get_input, (entry, entry1, text, '8'), row=5, column=1, ipadx=5, pady=5)
    place_button('9', get_input, (entry, entry1, text, '9'), row=5, column=2, ipadx=5, pady=5)
    place_button('0', get_input, (entry, entry1, text, '0'), row=6, column=0, ipadx=5, pady=5)
    place_button('.', get_input, (entry, entry1, text, '.'), row=6, column=1, ipadx=5, pady=5)
    place_button('←', backspace, (entry, text,),             row=6, column=2, ipadx=5, pady=5)

    place_button('↑', last,      (entry, text,),             row=7, column=0, pady=5, ipadx=5)
    place_button('↓', next,      (entry, text,),             row=7, column=1, pady=5, ipadx=5)
    place_button('C', clear,     (entry, entry1, text,),     row=7, column=2, pady=5, ipadx=5)
 
    place_button('+', get_input, (entry, entry1, text, '+'), bg=math_sign_bg, row=3, column=3, ipadx=5, pady=5)
    place_button('-', get_input, (entry, entry1, text, '-'), bg=math_sign_bg, row=4, column=3, ipadx=5, pady=5)
    place_button('*', get_input, (entry, entry1, text, '*'), bg=math_sign_bg, row=5, column=3, ipadx=5, pady=5)
    place_button('/', get_input, (entry, entry1, text, '/'), bg=math_sign_bg, row=6, column=3, ipadx=5, pady=5)
    place_button('=', calc,      (entry, entry1, text,),     bg=cal_output_bg,row=7, column=3, ipadx=5, pady=5)

    root.mainloop()

img