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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 仅用50行代码实现一个Python编写的计算器的教程

     简介 在这篇文章中,我将向大家演示怎样向一个通用计算器一样解析并计算一个四则运算表达式.当我们结束的时候,我们将得到一个可以处理诸如 1+2*-(-3+2)/5.6+3样式的表达式的计算器了.当然,你也可以将它拓展的更为强大. 我本意是想提供一个简单有趣的课程来讲解 语法分析 和 正规语法(编译原理内容).同时,介绍一下PlyPlus,这是一个我断断续续改进了好几年的语法解析 接口.作为这个课程的附加产物,我们最后会得到完全可替代eval()的一个安全的四则运算器. 如果你想在自家的电脑上试试

  • 基于wxpython开发的简单gui计算器实例

    本文实例讲述了基于wxpython开发的简单gui计算器.分享给大家供大家参考.具体如下: # wxCalc1 a simple GUI calculator using wxPython # created with the Boa Constructor which generates all the GUI components # all I had to do is add some code for each button click event # Boa free from: h

  • python实现简易版计算器

    学了一周的Python,这篇文章算是为这段时间自学做的小总结. 一.Python简介 Python是一门十分优美的脚本语言,如果学过java.c++那入门Python是非常简单的.Python具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起.常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写. 二.Python版计算器的实现 工具准备: 1.

  • Python实现简单的四则运算计算器

    一.算法 1.算法的主要思想就是将一个中缀表达式(Infix expression)转换成便于处理的后缀表达式(Postfix expression),然后借助于栈这个简单的数据结构,计算出表达式的结果. 2.关于如何讲普通的表达式转换成后缀表达式,以及如何处理后缀表达式并计算出结果的具体算法描述不在此叙述了,书上有详细的说明. 二.简易计算器 使用说明 使用该计算器类的简单示例如下: # usage c = Calculator() print('result: {:f}'.formart(c

  • Python Tkinter实现简易计算器功能

    闲暇时间用tkinter写了个简易计算器,可实现简单的加减乘除运算,用了Button和Entry2个控件,下面是代码,只是简单的用了偏函数partial,因为那么多button的大部分参数都是一样的,使用偏函数可以简化参数传递,避免同样的参数传递写N次. # -*- coding: utf-8 -*- #author: Cullen #import the module from Tkinter import * import tkFont import os from functools im

  • Python使用wxPython实现计算器

    本文实例为大家分享了wxPython实现计算器的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- ########################################## ## Python code generated with wxFormBuilder (version Feb 16 2016) ## http://www.wxformbuilder.org/ ## ## PLEASE DO "NOT" EDIT THIS FILE!

  • 基于python的Tkinter实现一个简易计算器

    本文实例介绍了基于python的Tkinter实现简易计算器的详细代码,分享给大家供大家参考,具体内容如下 第一种:使用python 的 Tkinter实现一个简易计算器 #coding:utf-8 from Tkinter import * import time root = Tk() def cacl(input_str): if "x" in input_str: ret = input_str.split("x") return int(ret[0]) *

  • Python+tkinter使用40行代码实现计算器功能

    本文实例为大家分享了40行Python代码实现计算器功能,供大家参考,具体内容如下 偶尔用脚本写点东西也是不错的. 效果图 代码 from tkinter import * reset=True def buttonCallBack(event): global label global reset num=event.widget['text'] if num=='C': label['text']="0" return if num in "=": label[

  • python 简易计算器程序,代码就几行

    代码: 复制代码 代码如下: import os while True: dynamic = input('输入计算表达式:') if dynamic != 'cls': try: result = eval(dynamic) print('计算结果:'+str(result)) except: print('计算表达式输入有误!') else: command = 'cls' os.system(command)

  • python正则表达式之作业计算器

    作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 一.说明: 有一点bug就是不能计算幂次方,如:'6**6'会报错 该计算器思路: 1.没用使用递归,先找出并计算所有括号里的公式,再计算乘除

随机推荐