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

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

时间: 2018-01-27

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

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

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

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

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 简易计算器程序,代码就几行

代码: 复制代码 代码如下: 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实现简易版计算器

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

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

基于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的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正则表达式之作业计算器

作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 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.没用使用递归,先找出并计算所有括号里的公式,再计算乘除

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+tkinter使用80行代码实现一个计算器实例

本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码,体会一下代码复用.字符串方法的运用和动态创建组件的妙处,然后在这个框架的基础上进行补充和发挥. 选择任何一款Python开发环境,创建一个程序文件,命名为tkinter_Calculator.pyw,然后编写下面的代码: 1)导入标准库re和tkinter,创建并简单设置应用主程序,在窗口顶部放置一个只读的文本框用来显示信息. 2)编写计算器上各种按钮的通用处

python不到50行代码完成了多张excel合并的实现示例

一 前言 公司同事最近在做excel相关的工作:今天来求助知识追寻者合并多个excel为一个一个工作本,原本是java操作poi太蛋疼了,笨重不堪,内存消耗严重,知识追寻者使用python不到40行代码完成了60多张excel工作本合并为一张:python真香 牛皮吹完了,如果看过知识追寻者系列文章的读者肯定知道之前知识追寻者发过一篇 python专题使用openpyxl操作excel:本篇使用的不是openpyx库,使用的使是xlrd,xlwt库,虽然这两库功能没法根openpyx相比,但可以

Python只用40行代码编写的计算器实例

本文实例讲述了Python只用40行代码编写的计算器.分享给大家供大家参考,具体如下: 效果图: 代码: 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['text']=str(

Python 40行代码实现人脸识别功能

前言 很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了.这些人里包括曾经的我自己.其实如果如果你不是非要深究其中的原理,只是要实现这一工作的话,人脸识别也没那么难.今天我们就来看看如何在40行代码以内简单地实现人脸识别. 一点区分 对于大部分人来说,区分人脸检测和人脸识别完全不是问题.但是网上有很多教程有无无意地把人脸检测说成是人脸识别,误导群众,造成一些人认为二者是相同的.其实,人脸检测解决的问题是确定一张图上有木有人脸,而人

golang 40行代码实现通用协程池

代码仓库 goroutine-pool golang的协程管理 golang协程机制很方便的解决了并发编程的问题,但是协程并不是没有开销的,所以也需要适当限制一下数量. 不使用协程池的代码(示例代码使用chan实现,代码略啰嗦) func (p *converter) upload(bytes [][]byte) ([]string, error) { ch := make(chan struct{}, 4) wg := &sync.WaitGroup{} wg.Add(len(bytes))

通过python连接Linux命令行代码实例

这篇文章主要介绍了通过python连接Linux命令行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- '''https://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/index.html''' import pexpect import types username = "root&qu

40行代码把Vue3的响应式集成进React做状态管理

前言 vue-next是Vue3的源码仓库,Vue3采用lerna做package的划分,而响应式能力@vue/reactivity被划分到了单独的一个package中. 如果我们想把它集成到React中,可行吗?来试一试吧. 使用示例 话不多说,先看看怎么用的解解馋吧. // store.ts import { reactive, computed, effect } from '@vue/reactivity'; export const state = reactive({ count:

纯javascript代码实现计算器功能(三种方法)

今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 方法一: 具体编写代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&q

不到40行代码用Python实现一个简单的推荐系统

什么是推荐系统 维基百科这样解释道:推荐系统属于资讯过滤的一种应用.推荐系统能够将可能受喜好的资讯或实物(例如:电影.电视节目.音乐.书籍.新闻.图片.网页)推荐给使用者. 本质上是根据用户的一些行为数据有针对性的推荐用户更可能感兴趣的内容.比如在网易云音乐听歌,听得越多,它就会推荐越多符合你喜好的音乐. 推荐系统是如何工作的呢?有一种思路如下: 用户 A 听了 收藏了 a,b,c 三首歌.用户 B 收藏了 a, b 两首歌,这时候推荐系统就把 c 推荐给用户 B.因为算法判断用户 A,B 对音