不到100行代码使用Python tkinter制作计算器Calculator

在 Python 中制作计算器

tkinter包适合编写一些简单的图形用户界面程序,这里演示使用tkinter制作一个简单的计算器。tkinter是Python的一个标准包,因此我们并不需要安装它,只需要导入它即可。

import tkinter as tk

这个计算器可以执行不同的算术操作,如加,减,乘和除。

计算器效果图:

在这里插入图片描述
在这里插入图片描述

非常的简单,这里也就不多介绍了,不如直接看代码吧。代码也挻少了,不到100行。感觉也没什么要解释的,基本也都有注释了。
当然这个计算器非常不完善,有兴趣的同学可以把它优化完善下。

所有代码

'''
Author: MarkLong
Date: 2021-05-15 12:12:22
Description: Calculator 计算器
'''
import tkinter as tk

class Calculator(tk.Tk):
    def __init__(self):
        super(Calculator, self).__init__()

        # 窗口标题
        self.title('Calculator')
        # 设定窗口的大小
        self.geometry('300x400+500+200')
        # 不能调整大小
        self.resizable(0, 0)
        # 显示用的变量
        self.num = ''

        # 用于显示输入和结果的标签screen_label
        self.scr_lbl = tk.Label(
            self,
            text='',
            font=('Arial', 20),
            anchor=tk.SE,
            bg='#595954',
            fg='white',
            height=2,
        )
        self.scr_lbl.pack(expand=True, fill=tk.BOTH)

        # 创建4个frames
        frames = [tk.Frame(self) for _ in range(4)]
        for frame in frames:
            frame.pack(expand=True, fill=tk.BOTH)

        # 创建buttons
        key_nums = [1, 2, 3, '+', 4, 5, 6, '-', 7, 8, 9, '*', 'C', 0, '=', '/']
        for n, key in enumerate(key_nums):
            key_n = tk.Button(
                frames[n // 4],
                text=key,
                font=('Arial', 22),
                border=0,
                activebackground='cyan',
                bg='#2E2E2B',
                fg='white',
                command=lambda key=key: self.display(key))  # 使用lambda,传递参数
            # lambda使用key=key技巧使函数在定义lambda时存储key的当前值,而不是等待稍后查找key值
            key_n.pack(expand=True, fill=tk.BOTH, side=tk.LEFT)
            if key == 'C':
                key_n.config(command=self.clear_scr)
            if key == '=':
                key_n.config(command=self.equal_btn)

    # 显示函数
    def display(self, number):
        self.num += str(number)
        self.scr_lbl['text'] = self.num

    # 清除显示
    def clear_scr(self):
        self.num = ''
        self.scr_lbl['text'] = self.num

    # 等于函数
    def equal_btn(self):
        try:
            result = str(eval(self.num))
            self.num = result
            self.scr_lbl['text'] = result
        except Exception as e:
            print('计算出错, error: ', e)
            self.clear_scr()
            self.scr_lbl.config(text='error')


if __name__ == "__main__":
    # 实例化窗口对象
    app = Calculator()
    # 主窗口循环显示,让window不断的刷新。
    app.mainloop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值