利用python的Tkinter库开发一个简易计算器

文章目录

    • 利用python的Tkinter库开发一个简易计算器
  • 前言
  • 一、实验准备
  • 二、开发步骤步骤
    • 1.引入库
    • 2.界面设计
    • 3.关键——实现Tkinter库的调用
  • 总结

前言

任何主流语言都可以开发一个简易的计算器,本篇我们将选用python来开发!附源代码


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验准备

1.开发软件选用——jupyter notebook
能编写python的软件有很多,本次实验我使用,当你要使用jupyter notebook首先要安装anaconda,安装的教程如下Anaconda 的安装教程(图文)但要注意的是Anaconda国内安装的清华源不可用,需要用到清华镜像,可在百度自查,这里就不附链接了。

2.图形界面的实现——Tkinter

当我们用python实现图形界面是,我们不得不用到的包就是Tkinter。Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。因为其语言简单易读,容易上手,这也是我选择python来做一个计算器的原因。若想详细了解Tkinter,可以看下大佬的详解,附链接:Python GUI之tkinter窗口视窗教程大集合

二、开发步骤步骤

1.引入库

这时候我们要调用python的Tkinter和math两个包,需要注意的是在python3以后Tkinter的调用‘T’是大写!!!不然编译会报错。
代码如下:

import math
import tkinter as tk

2.界面设计

程序设计主要分两大部分,一部分是界面设计,另一部分则是实现计算。首先我们来看下界面设计。首先我们先搭建一个框架,可以利用循环来补入按键,在这之前我们要注意给计算器初始化
代码如下(示例):

class Calc(tk.Tk):"""计算器窗体类"""def __init__(self):"""初始化实例"""tk.Tk.__init__(self)self.title("我的计算器")self.memory = 0  # 暂存数值self.Demo()def Demo(self):"""创建界面"""btn_list = ["C", "(", ")", "/","7", "8", "9", "*","4", "5", "6", "-","1", "2", "3", "+","+/-", "0", ".", "="]r = 1c = 0for b in btn_list:self.button = tk.Button(self, text=b, width=5,command=(lambda x=b: self.operate(x)))self.button.grid(row=r, column=c, padx=3, pady=6)c += 1if c > 3:c = 0r += 1self.entry = tk.Entry(self, width=24, borderwidth=2,bg="black", font=("黑体", 11))self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)

接下来就是实现算法部分了,在以往c++中为了实现一个多项式如:2-(3-2),当一下子多项式输入在计算器中,这一类关于括号优先级问题就得被考虑,还需要将数字和符号分别压入堆栈,判断优先级,当我们使用python时,则可以通过Tkinter文本框(entry)来实现entry的用法有很多,可看Python XML解析来了解更多,这里就不一一赘述了
代码如下:

def operate(self, key):"""press the button"""if key == "=":  # 输出结果result = eval(self.entry.get())#获取文本框输入的值(值为=)self.entry.insert(tk.END, " = " + str(result))#在’=‘后输出计算结果elif key == "C":  # 清空输入框self.entry.delete(0, tk.END)#将结果清零elif key == "+/-":  # 取相反数if "=" in self.entry.get():self.entry.delete(0, tk.END)elif self.entry.get()[0] == "-":self.entry.delete(0)else:self.entry.insert(0, "-")else:  # 其他键if "=" in self.entry.get():self.entry.delete(0, tk.END)self.entry.insert(tk.END, key)
if __name__ == "__main__":Calculator().mainloop()

3.关键——实现Tkinter库的调用

python提供了多个图形开发界面的库,常用的库就用Tkinter,使用Tkinter可以大大减少代码的行数,思路也较为清晰简单,简单易读,但在编写过程中,主要通过运用Tkinter的函数,这也使得程序的算法没有那么的突出。


总结

本文仅仅简单介绍了Tkinter的使用,来开发一个简易的计算器。大家可以根据可以通过下面的源代码,运行下来试一下,另附演示动图。另外对于本文中提到的Tkinter库有感兴趣的可以看下上面的链接,很详细

源代码

import tkinter as tk
class Calculator(tk.Tk):"""计算器窗体类"""def __init__(self):"""初始化实例"""tk.Tk.__init__(self)self.title("我的计算器")self.memory = 0  # 暂存数值self.Demo()def Demo(self):"""Create the Demo"""btn_list = ["C", "(", ")", "/","7", "8", "9", "*","4", "5", "6", "-","1", "2", "3", "+","+/-", "0", ".", "="]r = 1c = 0for b in btn_list:self.button = tk.Button(self, text=b, width=5,command=(lambda x=b: self.operate(x)))self.button.grid(row=r, column=c, padx=3, pady=6)c += 1if c > 3:c = 0r += 1self.entry = tk.Entry(self, width=21, borderwidth=3,bg="light blue", font=("黑体", 11))self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)def operate(self, key):"""press the button"""if key == "=":  # 输出结果result = eval(self.entry.get())#获取文本框输入的值(值为=)self.entry.insert(tk.END, " = " + str(result))#在’=‘后输出计算结果elif key == "C":  # 清空输入框self.entry.delete(0, tk.END)#将结果清零elif key == "+/-":  # 取相反数if "=" in self.entry.get():self.entry.delete(0, tk.END)elif self.entry.get()[0] == "-":self.entry.delete(0)else:self.entry.insert(0, "-")else:  # 其他键if "=" in self.entry.get():self.entry.delete(0, tk.END)self.entry.insert(tk.END, key)if __name__ == "__main__":Calculator().mainloop()

python的Tkinter库简单应用——开发一个简易计算器相关推荐

  1. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  2. C语言简单计算器考虑优先级,利用你现有的c语言知识 设计开发一个简易计算器,可进行加、减、乘、除、求余运算。...

    满意答案 nxy_159 推荐于 2017.11.21 采纳率:52%    等级:9 已帮助:3561人 #include float numA = 0; float numB = 0; float ...

  3. python通过Tkinter库实现的一个简单的文本编辑器源码

    下边资料是关于python通过Tkinter库实现的一个简单的文本编辑器的内容. from tkSimpleDialog import askstring from tkFileDialog impo ...

  4. 用 Python 的GUI 库 PySimpleGUI,写一个肥胖指数计算工具,Python开发就是这么简单

    Python 的 GUI 库 PySimpleGUI,写一个简单的有界面的小工具很简单!这里我们来写一个计算肥胖指数(BMI)的小工具.首先,通过百度得到 BMI 指数的计算公式为: 体重 / (身高 ...

  5. 用python的tkinter库制作仿windows看图器

    本文原载于我的简书,简书界面干净,更偏向于简书一些,我的简书 最近在学习python,就用python自己写了一个仿windows的看图器,在网上搜发现找不到相关的代码,所以决定自己尝试做了一个.看图 ...

  6. Python Web实战:Flask + Vue 开发一个漂亮的词云网站

    作者:snowspace@掘金 前言 大家好,我是菜鸟哥!Python里面两大最牛的Web框架,一个是Django,一个是Flask .今天就分享一个用Flask做的词云生成网站,非常有意思的小web ...

  7. Python使用tkinter库制作带有Laber标签、Entry文本框、Progressbar进度条、text日志框等元素的GUI操作界面

    本文通过实例介绍Python的tkinter库的title.iconbitmap.geometry.attributes.grid等类的功能,并制作带有Laber标签.Entry文本框.Progres ...

  8. 用python的turtle库给你画一个头像(猪头)

    用python的turtle库给你画一个头像 引 使用到的海龟绘图命令 源代码 画布和画笔设置 画脸盘子 取名字 画眼睛 画鼻子 画嘴巴 画耳朵 画腮红 小白感想 献上完整源代码 引 小白练习pyth ...

  9. tkinter message_【莫烦Python】Tkinter 做简单的窗口视窗lt;学习笔记(2)gt;

    接(1) 还有五个苹果:[莫烦Python]Tkinter 做简单的窗口视窗<学习笔记>​zhuanlan.zhihu.com 登录窗口小例子(pickle存取) import

最新文章

  1. 一文读懂因果推断的起源
  2. [python]自问自答:python -m参数? (转)
  3. oracle 父latch:library cache,library cache latch等待事件
  4. oracle归档目录莫名删除,Oracle归档目录被自动删除的bug
  5. 字母框如何影响UI内容的理解
  6. 卸载KVM虚拟机(全、干净、彻底)
  7. 先写一点informix的
  8. 第七章:在Spark集群上使用文件中的数据加载成为graph并进行操作(2)
  9. PHP Cookbook读书笔记 – 第13章Web自动化
  10. 什么是计算机在自动控制中的应用,计算机在自动控制中的应用
  11. 小米首页html代码,小米首页小功能案例.html
  12. 多测师肖sir_金牌高级讲师_po设计(000)
  13. 武汉市查询社保电脑号及公积金账号的方法(湖北省其他市也适用)
  14. paip.破解网站手机验证码
  15. 学完大数据基础,可以按照我写的顺序学下去
  16. 如何在 JavaScript 中使用对象解构
  17. Android 百度地图位置显示和标记
  18. Vultr VPS开放HTTP端口
  19. ubuntu chmod 和 chown 命令用法
  20. ZYNQ PL采集AD7606数据PS LWIP发送

热门文章

  1. 小学计算机课的游戏橡皮小人,小学计算机科学课:两个女孩和男孩使用带增强现实软件的数码平板电脑,他们感到兴奋、充满惊奇、好奇。STEM 、游戏、学习中的儿童...
  2. 困兽之斗--写给基地培训的同学们
  3. ipv6u前缀地址数中/32,/48,/64含义跟一些相关资料
  4. 「技术架构」10个提升应用程序性能的倚天剑和屠龙刀
  5. python识别图片中的二维码_python3+pyzbar+Image 进行图片二维码识别
  6. 写邮件的格式:加开头结尾,以示尊重
  7. N1盒子op系统nps内网穿透对接腾讯云傻妞
  8. Linux设备驱动-platform虚拟总线dya01
  9. Numpy中的数组变形操作01——reshape() 重塑, flatten()/reval() 扁平化
  10. 计算机专硕考数一英一的学校有哪些,这所211专硕改考数一英一!部分院校初试科目调整...