python使用tkinter实现简单计算器
作者:wiz_333 发布时间:2021-10-01 00:20:57
标签:python,tkinter,计算器
本文实例为大家分享了python使用tkinter实现简单计算器的具体代码,供大家参考,具体内容如下
class Counter:
#引入tkinter
import tkinter as tk
#引入消息弹窗模块
import tkinter.messagebox as mbox
#初始化Counter
def __init__(self):
#生成一个窗口对象
self.window = self.tk.Tk()
#命名窗口对象的显示title
self.window.title('计算器')
#设置窗口的大小
self.window.minsize(240, 325)
self.window.maxsize(240, 325)
#是否清空显示框判定参数
self.is_init_lable = False
#设置菜单
self.set_menu()
#设置显示框
self.lable_show = self.tk.Label(text='', anchor='se', font=('黑体', 30), fg='black')
self.lable_show.place(x=0, y=0, width=240, height=80)
#设置按钮组件
self.set_buttons()
#将窗口放入主消息队列
self.window.mainloop()
#设置菜单
def set_menu(self):
#创建总菜单
menubar = self.tk.Menu(self.window)
#创建一个下拉菜单,并且加入文件菜单
filemenu = self.tk.Menu(menubar, tearoff=0)
#创建下来菜单的选项
filemenu.add_command(label="退出计算器", command=self.window.quit)
#print author的函数
def show_author():
self.mbox.showinfo(message='Wiz333@XDL 2017')
filemenu.add_command(label="作者", command=show_author)
#将文件菜单作为下拉菜单添加到总菜单中,并且将命名为操作
menubar.add_cascade(label="操作", menu=filemenu)
#显示总菜单
self.window.config(menu=menubar)
#设置按钮组件
def set_buttons(self):
#7
btn7 = self.tk.Button(text='7', bd=2, font='黑体')
btn7.place(x=0, y=90, width=60, height=40)
#8
btn8 = self.tk.Button(text='8', bd=2, font='黑体')
btn8.place(x=60, y=90, width=60, height=40)
#9
btn9 = self.tk.Button(text='9', bd=2, font='黑体')
btn9.place(x=120, y=90, width=60, height=40)
#+
btn_jia = self.tk.Button(text='+', bd=2, font='黑体')
btn_jia.place(x=180, y=90, width=60, height=40)
#4
btn4 = self.tk.Button(text='4', bd=2, font='黑体')
btn4.place(x=0, y=130, width=60, height=40)
#5
btn5 = self.tk.Button(text='5', bd=2, font='黑体')
btn5.place(x=60, y=130, width=60, height=40)
#6
btn6 = self.tk.Button(text='6', bd=2, font='黑体')
btn6.place(x=120, y=130, width=60, height=40)
#-
btn_jian = self.tk.Button(text='-', bd=2, font='黑体')
btn_jian.place(x=180, y=130, width=60, height=40)
#1
btn1 = self.tk.Button(text='1', bd=2, font='黑体')
btn1.place(x=0, y=170, width=60, height=40)
#2
btn2 = self.tk.Button(text='2', bd=2, font='黑体')
btn2.place(x=60, y=170, width=60, height=40)
#3
btn3 = self.tk.Button(text='3', bd=2, font='黑体')
btn3.place(x=120, y=170, width=60, height=40)
#*
btn_cheng = self.tk.Button(text='*', bd=2, font='黑体')
btn_cheng.place(x=180, y=170, width=60, height=40)
#0
btn0 = self.tk.Button(text='0', bd=2, font='黑体')
btn0.place(x=0, y=210, width=120, height=40)
#.
btn_point = self.tk.Button(text='.', bd=2, font='黑体')
btn_point.place(x=120, y=210, width=60, height=40)
#/
btn_chu = self.tk.Button(text='/', bd=2, font='黑体')
btn_chu.place(x=180, y=210, width=60, height=40)
#取消
btn_cancel = self.tk.Button(text='C', bd=2, font='黑体')
btn_cancel.place(x=0, y=250, width=60, height=40)
#确定
btn_ok = self.tk.Button(text='=', bd=2, font='黑体')
btn_ok.place(x=60, y=250, width=180, height=40)
#绑定Button的点击事件
btn7.bind_class('Button', '<Button-1>', self.click_button)
#绑定Button的点击事件
def click_button(self,e):
#判断是否是新的运算,如果是则清空显示框
if self.is_init_lable:
self.lable_show['text'] = ''
self.is_init_lable = False
#label_show显示的累加
font = e.widget['text']
self.lable_show['text'] += font
#异常捕获
try:
#判定运算符号重复的时候,使用最后输入的符号
if self.lable_show['text'][-1] in ['+','-','*','/'] and self.lable_show['text'][-2] in ['+','-','*','/']:
header = self.lable_show['text'][:-2]
footer = self.lable_show['text'][-1]
self.lable_show['text'] = header+footer
except:
pass
#普通计算
if e.widget['text'] == '=':
try:
res = eval(self.lable_show['text'][:-1])
#print(res)
#小数点取到9位
self.lable_show['text'] = str(round(float(res), 5))
self.isinit = True
except ZeroDivisionError:
#除法时,除数不能为0
self.mbox.showerror(message='除法计算时!除数不能为0!')
except:
self.mbox.showerror(message='算式有误')
#取消当前输入的字符
if e.widget['text'] == 'C':
cancel_res = self.lable_show['text'][:-2]
self.lable_show['text'] = cancel_res
#实例化计算器对象
wiz = Counter()
来源:http://blog.csdn.net/wizblack/article/details/78932258
0
投稿
猜你喜欢
- 本章我们将介绍Django 管理工具及如何使用 Django 来创建项目,第一个项目我们以 HelloWorld 来命令项目。一、Djang
- Matplotlib 是 Python 的二维绘图库,用于生成符合出版质量或跨平台交互环境的各类图形。图形解析与工作流图形解析 工
- nginx简单配置php服务(多个)摘要:大部分网站开发语言都要运行在服务器,比如主流的nginx、apache等等,部署服务器环境对于大部
- TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本. TensorF
- Q1:PEP8是什么?Python之禅(import this)是什么?这题是考察你对编码规范的认识,无论是自己写代码还是在团队中写代码,了
- 发布Python包上一篇介绍了如何使用别人的轮子,现在我们讨论下如何自己造轮子给别人用。作为一个流行的开源开发项目,Python拥有一个活跃
- A:西米喜欢健身B:超超不爱健身,喜欢打游戏step1:分词A:西米/喜欢/健身B:超超/不/喜欢/健身,喜欢/打/游戏step2:列出两个
- 上文: 《IE7的web标准之道——1:前言(兼目录)》IE历来被web标准的拥护者所诟病,而当FireFox横空出世以后,更多的网页制作者
- 程序图标主要作用是为了使该程序更加具象及更容易理解,除了上述的作用外,有更好视觉效果的图标可以提高产品的整体体验和品牌,可引起用户的关注和下
- IE的for...in循环存在严重的缺陷,除了性能低下外,有许多属性不可遍历,著名有这三兄弟:constructor ,toString ,
- Pygame的mixer 模块可以依据命令播放一个或多个声音,并且也可以将这些声音混合在一起。而获得声音需要四个步骤:一、启动mixer进程
- 1.文件写入#打开文件,路径不对会报错f = open(r"C:\Users\jm\Desktop\pyfile.txt"
- MS SQL基本语法及实例操作 一:建表并初始化 ============================ create database
- 安装需要的包1 第一步:全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。haystack:全文检索的
- 由于本人使用的是windows 10 操作系统,所以介绍在 windows 10 系统中安装 Anaconda3 的过程。下载Anacond
- 整理字符串输入整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完
- function createHashDir($sign) { $md5 = md5($sign); if(!is_dir(MB_CACHE
- 例:公司员工采取三个轮班制度:凌晨0:00到早上8:00为第一班,早上8:00到下午4:00为第二班,下午4:00到晚上12:00为第三班。
- kNN算法是k-近邻算法的简称,主要用来进行分类实践,主要思路如下:1.存在一个训练数据集,每个数据都有对应的标签,也就是说,我们知道样本集
- 一、PIL的基本概念:PIL中所涉及的基本概念有如下几个:通道(bands)、模式(mode)、尺寸(size)、坐标系统(coordina