Python——计算器

目标

  1. 了解图形界面开发的基本要素
  2. 了解图形界面工作的基本原理
  3. 掌握 Tkinter 库的特点
  4. 理解 Tkinter 库的工作方式和原理
  5. 掌握Tkinter 界面开发的基本要素
  6. 掌握完整 Tkinter 界面程序的开发能力

要求

本实验以 Python 基本的 GUI 库 Tkinter 为基础,实现一个简易计数器程序,效果图如下。要求能够实现基本的四则运算,具备除 0 错误提示,实现归零操作

代码

#树莓派实验——基于Tkinter的图形化编程实验
import time
from tkinter import *
import tkinter as tk
import tkinter.font as tkFont
from functools import partial
#偏函数(Partial function)是通过将一个函数的部分参数预先绑定为某些值,从而得到一个新的具有较少可变参数的函数。
import math
'''
* 函数名称:button_input(entry,argu):
* 功能:向文本框组件中插入数据
* 参数含义:entry: 文本框组件argu:   文本数据
'''
def button_input(entry, argu):entry.insert(END, argu)  # 向文本框的尾部插入文本数据
'''
* 函数名称:Backspace(entry):
* 功能:删除操作
* 参数含义:entry: 文本框组件
'''
def Backspace(entry):input_len = len(entry.get())  # 获取文本框中内容的长度entry.delete(input_len-1)  # 删除文本框内容中的最后一项
'''
* 函数名称:clear(entry):
* 功能:清空操作
* 参数含义:entry: 文本框组件
'''
def clear(entry):entry.delete(0, END)  # 清空文本框中的内容
'''
* 函数名称:get_result(entry):
* 功能:计算表达式
* 参数含义:entry: 文本框组件
'''
def get_result(entry):input = entry.get()try:out = eval(input.strip())  # 调用eval函数,返回字符串表达式的计算结果except:  # 如果异常,即无法计算output = str('ERROR')  # 则输出“ERROR”else:output = str(out)  # 将计算结果以字符串形式存储clear(entry)  # 清空文本框entry.insert(END, output)  # 向文本框尾部插入计算结果
'''
* 函数名称:主函数
* 功能:绘制计算器界面,添加监听响应函数
* 参数含义:
'''
if __name__ == '__main__':window = tk.Tk()  # 创建tk窗口window.title('简易计算器')window.resizable(1, 1)  # 设置自适应自配尺寸entry_font = tkFont.Font(size=12)  # 设置文本框字体大小entry = Entry(window, justify='right', font=entry_font)  # 创建文本框组件entry.grid(row=0, column=0, columnspan=5,sticky=W+E+N+S, padx=5, pady=5)  # 放入相应位置#更改按钮的默认设置button_font = tkFont.Font(size=10, weight=tkFont.BOLD)  # 设置按钮组件的文本字体和大小button_bg = 'white'  # 设置按钮的背景色button_active_bg = 'blue'  # 设置按钮被按下时的背景色myButton = partial(Button, window, bg=button_bg, padx=10,pady=3, activebackground=button_active_bg)#用partial函数,将创建Button时的一些参数固定,变成新的Button组件构造函数myButton# 创建button0,对应“0”按钮button0 = myButton(text='0 ', command=lambda: button_input(entry, '0'))  button0.grid(row=4, column=0, pady=5, padx=5)# 创建button00,对应“00”按钮button00 = myButton(text='00', command=lambda: button_input(entry, '00'))  button00.grid(row=4, column=1, pady=5, padx=5)# 创建button1,对应“1”按钮button1 = myButton(text='1 ', command=lambda: button_input(entry, '1'))  button1.grid(row=3, column=0, pady=5, padx=5)# 创建button2,对应“2”按钮button2 = myButton(text='2 ', command=lambda: button_input(entry, '2'))  button2.grid(row=3, column=1, pady=5, padx=5)# 创建button3,对应“3”按钮button3 = myButton(text='3 ', command=lambda: button_input(entry, '3'))  button3.grid(row=3, column=2, pady=5, padx=5)# 创建button4,对应“4”按钮button4 = myButton(text='4 ', command=lambda: button_input(entry, '4'))  button4.grid(row=2, column=0, pady=5, padx=5)# 创建button5,对应“5”按钮button5 = myButton(text='5 ', command=lambda: button_input(entry, '5'))  button5.grid(row=2, column=1, pady=5, padx=5)# 创建button6,对应“6”按钮button6 = myButton(text='6 ', command=lambda: button_input(entry, '6'))  button6.grid(row=2, column=2, pady=5, padx=5)# 创建button7,对应“7”按钮button7 = myButton(text='7 ', command=lambda: button_input(entry, '7')) button7.grid(row=1, column=0, pady=5, padx=5)# 创建button8,对应“8”按钮button8 = myButton(text='8 ', command=lambda: button_input(entry, '8'))  button8.grid(row=1, column=1, pady=5, padx=5)# 创建button9,对应“9”按钮button9 = myButton(text='9 ', command=lambda: button_input(entry, '9'))  button9.grid(row=1, column=2, pady=5, padx=5)# 创建button10,对应“+”按钮button10 = myButton(text='+ ', command=lambda: button_input(entry, '+'))button10.grid(row=1, column=3, pady=5, padx=5)# 创建button11,对应“-”按钮button11 = myButton(text='- ', command=lambda: button_input(entry, '-'))button11.grid(row=2, column=3, pady=5, padx=5)# 创建button12,对应“*”按钮button12 = myButton(text='* ', command=lambda: button_input(entry, '*'))button12.grid(row=3, column=3, pady=5, padx=5)# 创建button13,对应“/”按钮button13 = myButton(text='/ ', command=lambda: button_input(entry, '/'))button13.grid(row=4, column=3, pady=5, padx=5)# 创建button14,对应“.”按钮button14 = myButton(text='. ', command=lambda: button_input(entry, '.'))  button14.grid(row=4, column=2, pady=5, padx=5)# 创建button15,对应“删除”按钮button15 = myButton(text='删除 ', command=lambda: Backspace(entry))button15.grid(row=1, column=4, pady=5, padx=5)# 创建button16,对应“清零”按钮button16 = myButton(text='清零', command=lambda: clear(entry))button16.grid(row=2, column=4, pady=5, padx=5)# 创建button17,对应“等于”按钮button17 = myButton(text='= ', command=lambda: get_result(entry))button17.grid(row=3, column=4, pady=5, padx=5)# 创建button18,对应“清除”按钮button18 = myButton(text='清除', command=lambda: clear(entry))button18.grid(row=4, column=4, pady=5, padx=5)window.mainloop()

Python——计算器相关推荐

  1. 初学__Python——Python中文支持、Python计算器

    目录 一.Python对中文的支持 二.简单实用的Python计算器 一.Python对中文的支持 在Python中,可以在各种编码间相互转换. 如果在交互式命令中使用中文,即便不做处理,一般也不会出 ...

  2. 作业1开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  3. python计算器小程序源码_python代码编写计算器小程序

    本文实例为大家分享了python计算器小程序的具体代码,供大家参考,具体内容如下 import tkinter import tkinter.messagebox import math class ...

  4. python计算器小程序源码_python编写计算器程序-python代码编写计算器小程序

    本文实例为大家分享了python计算器小程序的具体代码,供大家参考,具体内容如下 import tkinter import tkinter.messagebox import math class ...

  5. python计算器总结_Python 计算器的简单示例

    这篇文章主要为大家详细介绍了Python 计算器的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 简介 在这篇 ...

  6. Python计算器简单程序

    Python计算器 (Python Calculator) In this quick post, we will see how we can create a very simple python ...

  7. Python计算器程序(两位数的加减乘除操作)

    Python计算器程序(两位数的加减乘除操作) input("第一个数") input("操作符.运算符号") input("第二个数") ...

  8. python计算器gui设计_python GUI模拟实现计算器

    python编写计算器,供大家参考,具体内容如下 (1)计算器界面如下: (2)基本满足了计算器的所有需求,使用时不可键盘输入,只能鼠标点击左键才可执行.初始时显示0.0,每次输入的内容存于D:\nu ...

  9. python计算器基础知识_Python基础(一):将Python当做计算器、编程的第一步

    我们来尝试一些简单的 Python 命令.启动解释器然后等待主提示符 >>> 出现(不需要很久).1.1. 数字 解释器表现得就像一个简单的计算器:可以向其录入一些表达式,它会给出返 ...

最新文章

  1. 2021年大数据Spark(三十一):Spark On Hive
  2. [JAVA EE]Spring Boot 控制层:参数传递方法
  3. android intent email,Android Email Intent
  4. 968. Binary Tree Cameras 监控二叉树
  5. dealloc 的水,很深?
  6. matlab胡良剑第五章,MATLAB习题参考答案(胡良剑,孙晓君)
  7. makefile常用语法讲解(1)
  8. python comprehension_python list comprehension在一次迭代中产生两个值
  9. ajax提交时“加载中”提示的处理方法
  10. Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)
  11. Android 十大调试方法
  12. WebService的应用之winform身份验证
  13. VBOX下安装RHEL5.4增强工具失败的解决办法
  14. 所用计算机网卡品牌得的型号,惠普无线网卡驱动,详细教您如何
  15. android 3d翻转动画 viewpage,利用ViewPager实现3D画廊效果及其图片加载优化
  16. 机器学习需要的数据量需要怎么算
  17. Python数据分析-二手车数据用于机器学习二手车价格预测
  18. html邮件 自定义变量,CSS3中的自定义变量样式用法
  19. 7的倍数(shell脚本 day01)
  20. 程序员延寿指南 | A programmer's guide to live longer

热门文章

  1. 帆软报表入门操作(一)
  2. cs231n课程资料Python Numpy Tutorial的Python3版本
  3. 有趣的Python Challenge编程解谜游戏攻略二(5-9关)
  4. 小秘谈币:什么是实在的佛系炒币?
  5. 输入验证码,一直报错验证码错误(内网多服务器)
  6. Ubuntu下flash运行方法(2020.12后可用)
  7. android 位移传感器 坐标,位移传感器
  8. 前端面试知识点大全——浏览器篇
  9. 印象笔记使用(一)——微信篇
  10. 不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_Windows 7 怎么修复 Windows 中的 Wi-Fi 连接问题,我教你(六)...