python实现电子计算器

思路
python实现
创建计算器菜单, 并加入到主菜单
创建文本框,第一行三个按钮
后每行四个, 创建其余四行按钮

代码块

from tkinter import *
# from tkinter.ttk import *def frame(master):"""将共同的属性作为默认值, 以简化Frame创建过程"""w = Frame(master)w.pack(side=TOP, expand=YES, fill=BOTH)return wdef btn(master, text, command):"""提取共同的属性作为默认值, 使Button创建过程简化"""w = Button(master, text=text, command=command, width=6)w.pack(side=LEFT, expand=YES, fill=BOTH, padx=2, pady=2)return wdef calc(text_data):"""用eval方法计算表达式字符串"""try:if (separator_flag.get() == 0):return eval(del_separator(text_data))else:return add_separator(str(eval(del_separator(text_data))))except (SyntaxError, ZeroDivisionError, NameError):return 'Error'def back(text_data):"""将text_data最末的字符删除并返回"""if len(text_data) > 0:return text_data[:-1]else:return text_datadef add_separator(text_data):"""向参数传入的数字串中添加千位分隔符这里考虑了三种情况: 无整数部份, 无小数部份, 同时有整数和小数部份由于字符串是不可改变的, 这里由字符串生成列表以便执行insert操作和extend操作, 操作完成后最由列表生成字符串返回"""dot_index = text_data.find('.')if dot_index > 0:text_head = text[:dot_index]text_tail = text[dot_index:]elif dot_index < 0:text_head = text_datatext_tail = ''else:text_head = ''text_tail = text_datalist_ = [char for char in text_head]length = len(list_)tmp_index = 3while length - tmp_index > 0:list_.insert(length - tmp_index, ',')tmp_index += 3list_.extend(text_tail)new_text = ''for char in list_:new_text += charreturn new_textdef del_separator(text_data):"""删除数字串中所有的千位分隔符"""return text_data.replace(',', '')# 开始界面的实现
init_root = Tk()
init_root.resizable(width=False, height=False)init_root.title("计算器")  # 添加标题main_menus = Menu()  # 创建最上层主菜单# 创建计算器菜单, 并加入到主菜单
calc_menu = Menu(main_menus, tearoff=0)
calc_menu.add_command(label='退出', command=lambda: exit())
main_menus.add_cascade(label='菜单', menu=calc_menu)text = StringVar()
separator_flag = IntVar()
separator_flag.set(0)
view_menu = Menu(main_menus, tearoff=0)init_root['menu'] = main_menus  # 将主菜单与root绑定# 创建文本框
Entry(init_root, textvariable=text).pack(expand=YES, fill=BOTH, padx=2, pady=4)# style = Style()
# style.configure('TButton', padding=3)# 创建第一行三个按钮
first_line = frame(init_root)
btn(first_line, '回退', lambda t=text: t.set(back(t.get())))
btn(first_line, '清空', lambda t=text: t.set(''))# 每行四个, 创建其余四行按钮
for key in ('789/', '456*', '123-', '0.=+'):others = frame(init_root)for char in key:if char == '=':btn(others, char,lambda data=text: data.set(calc(data.get())))else:btn(others, char,lambda data=text, c=char: data.set(data.get() + c))
if __name__ == '__main__':init_root.mainloop()

python实现电子计算器相关推荐

  1. Python实现电阻计算器——快速计算电阻值

    Python实现电阻计算器--快速计算电阻值 在电子工程领域,电阻器是一种常用的电路元件,而对于电阻值的计算也是非常重要的.本文将介绍如何使用Python编写一个简单的电阻计算器,以帮助电子工程爱好者 ...

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

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

  3. 基于stm32简易计算机电路图,基于STM32的简易电子计算器设计与实现(DOC).doc

    嵌入式系统设计实验综合设计报告 PAGE 四川师范大学成都学院通信工程学院 基于STM32的简易电子计算器设计与实现 实验综合设计报告 学生姓名 陶龑 学 号 2016301033 所在学院 通信工程 ...

  4. 大班科学认识电子计算机教案与反思,幼儿园大班科学教案:认识电子计算器.doc...

    幼儿园大班科学教案:认识电子计算器.doc (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 幼儿园大班科学教案:认识电子计算器活动目标 ...

  5. python整数加法计算器_Python应用实例赏析2.1简单计算

    在日常应用中,我们会经常使用计算器进行计算,有些时候普通计算器的功能不能满足需要,例如使用计算机系统自带的计算器,计算不能超过32位数,手机自带计算器不能超过15位等(我的电脑和手机),也可能计算需要 ...

  6. Python监视电子邮箱并提示收到新邮件

    代码功能:程序运行后,提示输入电子邮箱账号和密码,然后模拟登录.获取最新邮件ID.退出的操作,如果有新邮件则进行提示. 参考代码: ----------喜大普奔---------- 1.董付国老师Py ...

  7. 随想录(python编写的计算器和贪吃蛇游戏)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] python除了用来开发server.web之外,一般还可以用来开发客户端,特别是用来做一些de ...

  8. 基于FPGA的电子计算器设计(下)

    今天给大侠带来基于FPGA的电子计算器设计,由于篇幅较长,分三篇.今天带来第三篇,下篇,话不多说,上货. 导读 本篇介绍了一个简单计算器的设计,基于 FPGA 硬件描述语言 Verilog HDL,系 ...

  9. python编写程序、从键盘输入一个年份_通过计算当年 - 出生年份使用python创建年龄计算器...

    我已经查看了所有堆栈溢出,所以我真的需要帮助.我正在制定一个程序,通过询问他们的出生年份来计算一个人的年龄,验证他们的出生年份是正确的,如整数,而不是单词或任何其他无效类型的答案.然后减去当年的出生年 ...

最新文章

  1. 武汉第二中学2021年高考成绩查询,武汉中学排名前十名,2021年武汉中学排名一览表...
  2. Linux下修改mysql默认最大连接数,查看当前设置的最大连接数
  3. phpstorm xdebug remote配置
  4. 小Z的房间[HEOI2015] (matrix-tree定理)
  5. python之文件目录和路径
  6. shell 远程协助协助(转载)
  7. HDU - 6955 Xor sum tire树 + 贪心
  8. mysql查询不确定的信息_mysql-非常复杂的查询,不确定是否可行.涉及...
  9. 基于FPGA实现uart串口模块(Verilog)--------接收模块及思路总结
  10. echarts可以去掉边距吗_又有近视又有散光怎么办?近视手术可以同时去掉吗?...
  11. C++对象数组的实例学习
  12. 浅谈Es6中import * as xxx from几种基本用法
  13. 腾讯手机指纹认证标准:soter原理
  14. BacNet IP开发过程
  15. 数据可视化——seaborn(二)
  16. 查询手机号的归属地及运营商接口(验证可用)
  17. python爬虫 煎蛋网妹子图 动态爬虫1
  18. 蛮力法(python)
  19. 【HCIE考试喜报】2022年11月11日考试通过
  20. 以AI实训建设支持“加快构建现代职业教育体系”,培养新时代的“大国工匠”...

热门文章

  1. 友善之臂mini6410开发板学习笔记
  2. 【Linux】[万字] 详析 Linux磁盘文件管理系统、文件inode以及 软硬连接
  3. 什么是正向设计和逆向设计?
  4. 职业高中计算机专业要学些什么,职业高中电子专业主要学什么
  5. 百度云携手银联商务 “云+支付”描绘中国金融云未来
  6. 【Android 进阶】Android优秀框架
  7. m3u8及TS文件下载解密:m3u8文件下载及分析(一)
  8. mysql查询前20条数据_SQL查询排序后前20条语句
  9. 推荐,对BLOGER的重要性
  10. Burpsuite Intruder(测试器)爆破的4种方式说明