下图为简易、实用的计算器的效果图,今天展示用百行代码完成。

一、导入模块

import tkinter as tk

二、整体布局

win = tk.Tk()                         # 实例化一个窗体对象

win.title('简易计算器')           # 窗口标题
win.geometry('295x280')          # 窗口大小
win.attributes('-alpha', 0.9)       # 透明度
win["background"] = '#ffffff'       # 背景色

三、面板部分

1、 输入框

result_num = tk.StringVar()
result_num.set('')
tk.Label(win,textvariable=result_num,font=('宋体', 20),
         height=2,width=20,justify=tk.LEFT,anchor=tk.SE
         ).grid(row=1, column=1, columnspan=4)               # 网格布局

2、 第一行按钮C、%、/、X

# 按钮内容和样式
b_clear = tk.Button(win, text='C', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#b1b2b2')  # relief对齐样式:水平
b_per = tk.Button(win, text='%', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#b1b2b2')
b_division = tk.Button(win, text='/', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#b1b2b2')
b_multipli = tk.Button(win, text='X', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#b1b2b2')
# 按钮布局
b_clear.grid(row=2, column=1, padx=4, pady=2)
b_per.grid(row=2, column=2, padx=4, pady=2)
b_division.grid(row=2, column=3, padx=4, pady=2)
b_multipli.grid(row=2, column=4, padx=4, pady=2)

3、 第二行按钮7、8、9、-

b_7 = tk.Button(win, text='7', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_8 = tk.Button(win, text='8', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_9 = tk.Button(win, text='9', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_subtraction = tk.Button(win, text='—', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#b1b2b2')

b_7.grid(row=3, column=1, padx=4, pady=2)
b_8.grid(row=3, column=2, padx=4, pady=2)
b_9.grid(row=3, column=3, padx=4, pady=2)
b_subtraction.grid(row=3, column=4, padx=4, pady=2)

4、 第三行按钮4、5、6、+

b_4 = tk.Button(win, text='4', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_5 = tk.Button(win, text='5', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_6 = tk.Button(win, text='6', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_add = tk.Button(win, text='+', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#b1b2b2')

b_4.grid(row=4, column=1, padx=4, pady=2)
b_5.grid(row=4, column=2, padx=4, pady=2)
b_6.grid(row=4, column=3, padx=4, pady=2)
b_add.grid(row=4, column=4, padx=4, pady=2)

5、 第四行按钮1、2、3、=

b_1 = tk.Button(win, text='1', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_2 = tk.Button(win, text='2', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_3 = tk.Button(win, text='3', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
# 等号跨行显示,高度、行宽增加
b_equal = tk.Button(win, text='=', width=5, height=3, font=('宋体', 16), relief=tk.FLAT, bg='#b1b2b2')

b_1.grid(row=5, column=1, padx=4, pady=2)
b_2.grid(row=5, column=2, padx=4, pady=2)
b_3.grid(row=5, column=3, padx=4, pady=2)
b_equal.grid(row=5, column=4, padx=4, pady=2, rowspan=2)

6、 第五行按钮0、.

# 0跨列显示,宽度、列跨度增加
b_0 = tk.Button(win, text='0', width=12, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')
b_dot = tk.Button(win, text='.', width=5, font=('宋体', 16), relief=tk.FLAT, bg='#eacda1')

b_0.grid(row=6, column=1, padx=4, pady=2, columnspan=2)
b_dot.grid(row=6, column=3, padx=4, pady=2)

四、逻辑部分

1、 显示函数

def click_button(x):
    # print('x:\t',x)            # 检测显示效果
    result_num.set(result_num.get()+x)

2、 运算函数

def operation():
    opt_str = result_num.get()
    result = eval(opt_str)
    result_num.set(str(result))

3、 按键命令

b_1.config(command=lambda: click_button('1'))
b_2.config(command=lambda: click_button('2'))
b_3.config(command=lambda: click_button('3'))
b_4.config(command=lambda: click_button('4'))
b_5.config(command=lambda: click_button('5'))
b_6.config(command=lambda: click_button('6'))
b_7.config(command=lambda: click_button('7'))
b_8.config(command=lambda: click_button('8'))
b_9.config(command=lambda: click_button('9'))
b_0.config(command=lambda: click_button('0'))
b_add.config(command=lambda: click_button('+'))
b_subtraction.config(command=lambda: click_button('-'))
b_multipli.config(command=lambda: click_button('*'))
b_division.config(command=lambda: click_button('/'))
b_dot.config(command=lambda: click_button('.'))
b_clear.config(command=lambda: result_num.set(''))

b_per.config(command=lambda: click_button('/100'))
b_equal.config(command=operation)

五、 运行

win.mainloop()

六、效果演示

QQ录屏20230509105355

哈哈,大功告成!效果杠杠的,我在里面添加了‘防伪标志’。

举一反三学python(12)—制作简易计算器相关推荐

  1. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  2. Python制作简易计算器(GUI)---Tkinter

    Python制作简易计算器(GUI)---Tkinter Tkinter简介 Tkinter 与 PyQt5 的比较 Tkinter PyQt5 项目展示 导入模块 函数封装 1. 运算公式的拼接与展 ...

  3. python 制作简易计算器~用户界面设计

    用python制作简易计算器 def shu1():#按键函数1,将会绑在相应的"1"."2"..."0"键上e1.insert(INSER ...

  4. 【Proteus仿真】51单片机制作简易计算器+ LCD1602显示

    [Proteus仿真]51单片机制作简易计算器+ LCD1602显示 Proteus仿真效果演示 程序代码 #include<reg51.h> //头文件 #define uint uns ...

  5. js装修计算器java代码_JS制作简易计算器的实例代码

    做一个简易计算器,效果图片 c表示清空,为一个空字符串 +/-表示该值为正还是负 %表示当前值/100 ←表示退格,往前删除一个值 eval 函数是能够计算出字符串表达式或者语句的结果,把结果求出来. ...

  6. 制作简易计算器:接收用户输入,两个操作数,一个操作符,给出用户结果。2021/01/17

    制作简易计算器:接收用户输入,两个操作数,一个操作符,给出用户结果.写在script中 var x=prompt("请输入第一个数字:",""); var y= ...

  7. Python制作简易计算器

    简易计算器 简易计算器功能: 实现输入,计算,输出功能: 可以计算基本的加减乘除功能: 处理除法中除数不能为零的设计: 处理输入不能为空的设计: 记录历史计算,显示在右边文本框: 不同于之前的两个项目 ...

  8. JavaScript初学入门(JS打印9*9乘法表,JS制作简易计算器)

    目录 网页的三部分组成: Java和JavaScript的关系: JavaScript的三种使用方式: Js的5种输出方式: Js的语法初始: js中值的类型: JS中的运算符: JS中的流程控制语句 ...

  9. Java GUI图形编程 使用awt和swing 制作简易计算器的工具包含源码和讲解 / java练习项目

    系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录 系列文章目录 前言 一.常规配置 1. 设置窗口大小 2. 获取当前屏幕的尺寸 3. 窗口居中 4. 设置窗口名称 5. 添加监听器,关闭窗口 ...

  10. shell制作简易计算器和可能出现的“too many argument”问题的解决

    今天用shell制作了一个简易计算器如下: 在使用之后,进行"+""-"运算的时候计算器正常使用,而开始进行"\*"运算时就会出现如下报错: ...

最新文章

  1. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
  2. 1.IocDI和Spring
  3. DevOps运维开发一体化 - 公开课笔记
  4. cerely异步分布式
  5. iOS 根据日期判断星座源代码
  6. 做公益的飞秋(FeiQ)程序代码
  7. 微课|Python程序设计开发宝典(5.1.2节):嵌套函数定义2
  8. java 并发之volatile
  9. UVA280 LA5588 Vertex【DFS】
  10. mysql中innodb的工作原理_解读MySQL的InnoDB引擎日志工作原理
  11. 重构第0天--重构的理解
  12. DirectX Repair
  13. 并发网站压力测试工具
  14. DES加密算法介绍(含例子)
  15. iOS调用高德地图导航
  16. Scratch小游戏《恐龙》
  17. php 回车符替换,php怎么替换回车符
  18. 统一社会信用代码校验规则
  19. 免费小程序转码工具(小程序转码机器人)业务推广必备
  20. VUE中的img的:src动态加载图片的问题,require也不能随便用

热门文章

  1. 把域名续费到了2023年
  2. 四年级学生要用计算机吗,小学四年级数学:电子计算器的使用
  3. threeJS-Helper07-GridHelper(网格助手)
  4. 会计使用计算机手法,会计的基本方法
  5. 机器学习讲堂 sklearn.svm包中的SVC(kernel=”linear“)和LinearSVC的区别
  6. android xml文件写入,将XML文件写入android
  7. java alarm api_对Java的接口和抽象类 的一些了解
  8. 学习openstack有感
  9. Super Flexible File Synchronize使用方法
  10. STM32F4 EXTI外部中断(一)