Python计算器程序代码

from tkinter import *

import random

class App:

    def __init__(self, master):

        self.master = master

        self.initwidgets()

        #表达式的值

        self.expr = None

    def initwidgets(self):

        #定义一个输入组件

        self.show = Label(relief = SUNKEN, font = ('Courier New', 24), width = 25,

                          bg = 'white', anchor = E)

        self.show.pack(side = TOP, pady = 10)

        p = Frame(self.master)

        p.pack(side = TOP)

        #定义字符串元组

        names = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-', '*', '/', '.', '=')

        for i in range(0, len(names)):

            #创建Button,将Button放入p组件中

            b = Button(p, text = names[i], font = ('Verdana', 20), width = 6)

            b.grid(row = i // 4, column = i % 4)

            #为鼠标左键的单击事件绑定事件处理方法

            b.bind('<Button-1>', self.click)

            #为鼠标左键的双击事件绑定事件处理方法

            if b['text'] == '=':

                b.bind('<Double-1>', self.clean)

    def click(self, event):

        #如果用户单击的是数字或点号

        if(event.widget['text'] in ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.')):

            self.show['text'] = self.show['text'] + event.widget['text']

        #如果用户单击了运算符

        elif(event.widget['text'] in ('+', '-', '*', '/')):

            #如果当前表达式为None,则直接用show组件的内容和运算符进行连接

            if self.expr is None:

                self.expr = self.show['text'] + event.widget['text']

            #如果当前表达式不为None,则用表达式,show组件的内容和运算符进行连接

            else:

                self.expr = self.expr + self.show['text'] + event.widget['text']

            self.show['text'] = ''

        elif(event.widget['text'] == '=' and self.expr is not None):

            self.expr = self.expr + self.show['text']

            print(self.expr)

            #使用eval函数计算表达式的值

            self.show['text'] = str(eval(self.expr))

            self.expr = None

    #当双击=按钮时,程序清空计算结果,将表达式值设为None

    def clean(self, event):

        self.expr = None

        self.show['text'] = ''

root = Tk()

root.title('计算器')

App(root)

root.mainloop()


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值