• 技术文章 >Python技术 >Python基础教程

    python怎么编写计算器程序

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-10-14 09:45:31原创12055

    该计算器是使用Python tkinter模块进行开发的。下面给大家介绍具体代码:

    效果如下图:

    代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    136

    137

    138

    139

    140

    141

    142

    143

    import tkinter #导入tkinter模块

     

    root  = tkinter.Tk()

    root.minsize(280,500)

    root.title('李蛟龙的计算器')

     

    #1.界面布局

    #显示面板

    result = tkinter.StringVar()

    result.set(0)                      #显示面板显示结果1,用于显示默认数字0

    result2 = tkinter.StringVar()           #显示面板显示结果2,用于显示计算过程

    result2.set('')

    #显示版

    label = tkinter.Label(root,font = ('微软雅黑',20),bg = '#EEE9E9',bd ='9',fg = '#828282',anchor = 'se',textvariable

    = result2)

    label.place(width = 280,height = 170)

    label2 = tkinter.Label(root,font = ('微软雅黑',30),bg = '#EEE9E9',bd ='9',fg = 'black',anchor = 'se',textvariable

    = result)

    label2.place(y = 170,width = 280,height = 60)

     

    #数字键按钮

     

    btn7 = tkinter.Button(root,text = '7',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('7'))

    btn7.place(x = 0,y = 285,width = 70,height = 55)

    btn8 = tkinter.Button(root,text = '8',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('8'))

    btn8.place(x = 70,y = 285,width = 70,height = 55)

    btn9 = tkinter.Button(root,text = '9',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('9'))

    btn9.place(x = 140,y = 285,width = 70,height = 55)

      

    btn4 = tkinter.Button(root,text = '4',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('4'))

    btn4.place(x = 0,y = 340,width = 70,height = 55)

    btn5 = tkinter.Button(root,text = '5',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('5'))

    btn5.place(x = 70,y = 340,width = 70,height = 55)

    btn6 = tkinter.Button(root,text = '6',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('6'))

    btn6.place(x = 140,y = 340,width = 70,height = 55)

      

    btn1 = tkinter.Button(root,text = '1',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('1'))

    btn1.place(x = 0,y = 395,width = 70,height = 55)

    btn2 = tkinter.Button(root,text = '2',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('2'))

    btn2.place(x = 70,y = 395,width = 70,height = 55)

    btn3 = tkinter.Button(root,text = '3',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('3'))

    btn3.place(x = 140,y = 395,width = 70,height = 55)

    btn0 = tkinter.Button(root,text = '0',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :

    pressNum('0'))

    btn0.place(x = 70,y = 450,width = 70,height = 55)

     

     

    #运算符号按钮

    btnac = tkinter.Button(root,text = 'AC',bd = 0.5,font = ('黑体',20),fg = 'orange',command = lambda :pressCompute('AC'))

    btnac.place(x = 0,y = 230,width = 70,height = 55)

    btnback = tkinter.Button(root,text = '←',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:

    pressCompute('b'))

    btnback.place(x = 70,y = 230,width = 70,height = 55)

    btndivi = tkinter.Button(root,text = '÷',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:

    pressCompute('/'))

    btndivi.place(x = 140,y = 230,width = 70,height = 55)

    btnmul = tkinter.Button(root,text ='×',font = ('微软雅黑',20),fg = "#4F4F4F",bd = 0.5,command = lambda:

    pressCompute('*'))

    btnmul.place(x = 210,y = 230,width = 70,height = 55)

    btnsub = tkinter.Button(root,text = '-',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:

    pressCompute('-'))

    btnsub.place(x = 210,y = 285,width = 70,height = 55)

    btnadd = tkinter.Button(root,text = '+',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:

    pressCompute('+'))

    btnadd.place(x = 210,y = 340,width = 70,height = 55)

    btnequ = tkinter.Button(root,text = '=',bg = 'orange',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command =

    lambda :pressEqual())

    btnequ.place(x = 210,y = 395,width = 70,height = 110)

    btnper = tkinter.Button(root,text = '%',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:

    pressCompute('%'))

    btnper.place(x = 0,y = 450,width = 70,height = 55)

    btnpoint = tkinter.Button(root,text = '.',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:

    pressCompute('.'))

    btnpoint.place(x = 140,y = 450,width = 70,height = 55)

     

    #操作函数

    lists = []                            #设置一个变量 保存运算数字和符号的列表

    isPressSign = False                  #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮

    isPressNum = False

    #数字函数

    def pressNum(num):                   #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上

        global lists                     #全局化lists和按钮状态isPressSign

        global isPressSign

        if isPressSign == False:

            pass

        else:                            #重新将运算符号状态设置为否

            result.set(0)

            isPressSign = False

     

        #判断界面的数字是否为0

        oldnum = result.get()             #第一步

        if oldnum =='0':                 #如过界面上数字为0 则获取按下的数字

           result.set(num)

        else:                            #如果界面上的而数字不是0  则链接上新按下的数字

            newnum = oldnum + num

            result.set(newnum)            #将按下的数字写到面板中

     

    #运算函数

    def pressCompute(sign):

        global lists

        global isPressSign

        num = result.get()              #获取界面数字

        lists.append(num)               #保存界面获取的数字到列表中

     

        lists.append(sign)              #讲按下的运算符号保存到列表中

        isPressSign = True

     

        if sign =='AC':                #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0

            lists.clear()

            result.set(0)

        if sign =='b':                 #如果按下的是退格‘’,则选取当前数字第一位到倒数第二位

            a = num[0:-1]

            lists.clear()

            result.set(a)

     

    #获取运算结果函数

    def pressEqual():

        global lists

        global isPressSign

     

        curnum = result.get()           #设置当前数字变量,并获取添加到列表

        lists.append(curnum)

     

        computrStr = ''.join(lists)     #讲列表内容用join命令将字符串链接起来

        endNum = eval(computrStr)       #用eval命令运算字符串中的内容

    #    a = str(endNum)

    #   b = '='+a                       #给运算结果前添加一个 ‘=’ 显示   不过这样写会有BUG

    不能连续运算,这里注释,不要 =

    #   c = b[0:10]                     #所有的运算结果取9位数

        result.set(endNum)                   #讲运算结果显示到屏幕1

        result2.set(computrStr)         #将运算过程显示到屏幕2

        lists.clear()                   #清空列表内容

     

    root.mainloop()

    专题推荐:python 编写 计算器 程序
    上一篇:python如何判断回文 下一篇:python有主函数吗

    相关文章推荐

    • Python如何使用tkinter编写GUI程序• 如何用python写程序

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网