Python实现简易图形用户界面计算器
- 推荐自己的专栏:分享一些Python案例,将所学用出来
一:计算器界面
使用tkinter实现一个支持四则运算的简易图形用户界面计算器
界面和功能
筒易图形用户界面计算器的界面设计如图所示
- 第一行显示输入的运算表达式;
- 第二行显示当前输入的操作数或运算结果;
- 第三行到第七行为计算器按钮。
二:计算器设计思路
思维和设计方法
创建一个继承于Frame的类Calc来实现计算器。
实现界面。在Calc构造函数,创建简易图形用户界面计算器的各个组件对象。
- 构造函数中,
创建两个Label对象:exprLabel (用于显示运算表达式)、resultLabel (用于显示当前输入操作数或者运算结果)。
创建两个StringVar实例对象expr和result,并分别绑定到对应得Label对象。使用grid布局,在第一行和第二行显示两个Label对象。
# 显示运算表达式
self.expr = tk.StringVar()
self.expr.set('')
self.exprLabel = tk.Label(self, font = ('Helvetica', 20),fg = '#f40', width = 42, anchor='w', textvariable = self.expr)
self.exprLabel.grid(row = 0, column = 0, columnspan = 4)# 显示结果
self.result = tk.StringVar()
self.result.set(0)
self.resultLabel = tk.Label(self, font = ('Helvetica', 20),width = 42, anchor='e', textvariable=self.result)
self.resultLabel.grid(row = 1, column = 0, columnspan = 4)
- 使用一个二维列表存储按钮标签,
然后使用嵌套循环的方法创建和布局各个按钮。在循环中定义事件处理函数cmd().默认参数为按钮标签buttons[r][c]),调用实例方法click(key),从而实现使用一一个函数(使用默认参数)处理所有的按钮事件。
buttons = [[ 'CE', 'C', '←', '/'],['7', '8', '9', '×'],['4', '5', '6', '-'],['1', '2', '3', '+'],['±', '0', '.', '=']]
- 事件处理。在事件处理函数click(self, key)中,按key的值,执行不同的处理逻辑。在构造函数中,创建一个变量startOfNextOperand (默认为True),用于表示是否开始输入下一个操作数。如果变量startOfNextOperand为True时,按数字键会设置当前输入为0,重新输入新的操作数;如果变量startOfNextOperand为False时,继续输入当前操作数的下一个数字字符。
- 按数字或者小数点按钮键。把输入的字符链接到当前输入操作数之后。
- 按 ← 按钮鍵,可以清除当前输入操作数的最后一个字符。
- 按 ± 按钮鍵,切换当前输入数的正负号。
- 按 C 按钮键,清除当前输入的操作数。
- 按返算符 /、×、-、+ 按钮键时,显示到目前为止的输入的运算表达式。
- 按 = 按钮键,执行运算,显示运算结果。
- 在
if__name__ == __main__:
语句中编写测试代码,创建Calculate对象,并显示运行结果。
calculator.py
import tkinter as tkclass Calculate(tk.Frame):def __init__(self, parent = None):"""构造函数"""tk.Frame.__init__(self, parent)self.pack()self.startOfNextOperand = True # 开始输入下一个操作数# 显示运算表达式self.expr = tk.StringVar() self.expr.set('')self.exprLabel = tk.Label(self, font = ('Helvetica', 20),fg = '#f40', width = 42, anchor='w', textvariable = self.expr)self.exprLabel.grid(row = 0, column = 0, columnspan = 4)# 显示结果self.result = tk.StringVar() self.result.set(0)self.resultLabel = tk.Label(self, font = ('Helvetica', 20),width = 42, anchor='e', textvariable=self.result)self.resultLabel.grid(row = 1, column = 0, columnspan = 4)# 计算器按钮的按钮,使用二维列表表示buttons = [[ 'CE', 'C', '←', '/'],['7', '8', '9', '×'],['4', '5', '6', '-'],['1', '2', '3', '+'],['±', '0', '.', '=']]# 创建和布局3到7行各个按钮for r in range(5):for c in range(4):# 定义事件处理函数cmd(),默认参数为按钮标签buttons[r][c]def cmd(key = buttons[r][c]):self.click(key)if(r == 0 or c == 3):button = tk.Button(self, text = buttons[r][c], bg = '#008c8c', fg = '#fff', width=15, font = ('Helvetica', 15), command = cmd)else:button = tk.Button(self, text = buttons[r][c], bg = '#fff', fg = '#666', width=15, font = ('Helvetica', 15), command = cmd)button.grid(row = r+2, column = c)def click(self, key):"""事件处理"""if key == '=': #按等号键时, 求值, 并显示结果result = eval(self.expr.get() + self.result.get())self.result.set(result)self.expr.set('')self.startOfNextOperand = Trueelif key in '+-/×':if key == '×': key = '*'resultExpr = self.expr.get() + self.result.get() + keyself.expr.set(resultExpr)self.result.set(0)self.startOfNextOperand = Trueelif key == 'C': # 全部清空, 回到初始状态self.expr.set('')self.result.set(0)elif key == 'CE': # 清空当前输入self.result.set(0)elif key == '←':oldnum = self.result.get()if len(oldnum) == 1: # 只有一个字符newnum = 0else:newnum = oldnum[:-1]self.result.set(newnum)elif key == '±': # 正负号,切换正负号oldnum = self.result.get() # 获取原来的值if oldnum[0] == '-':newnum = oldnum[1:]else:newnum = '-' + oldnumself.result.set(newnum)else: # 按数字或者小数点键if self.startOfNextOperand:self.result.set(0)self.startOfNextOperand = Falseoldnum = self.result.get() # 获取原来的值if oldnum == '0':self.result.set(key)else:newnum = oldnum + keyself.result.set(newnum)if __name__ == '__main__':root = tk.Tk()root.title('简易计算器')calculate = Calculate(root)root.mainloop()
Python实现简易图形用户界面计算器相关推荐
- python编程基础:python 实现GUI(图形用户界面)编程详解
今天小编就为大家分享一篇python 实现GUI(图形用户界面)编程详解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python支持多种图形界面的第三方库,包括: wxWidge ...
- 转:python 实现GUI(图形用户界面)编程
转:https://blog.csdn.net/dongfei2033/article/details/77971197/ Python支持多种图形界面的第三方库,包括: wxWidgets Qt G ...
- gui设置可编辑文本框的回调函数_用Tkinter制作Python程序的图形用户界面(GUI),打包后比Qt5减少60M(77.5%)(实例63)...
实例61使用PyQt5制作了图形用户界面(GUI).这个香是香,但是打包后的安装文件太大(约80M),感觉有些美中不足啊.由于这个GUI实在简单,从现实角度实在用不着高大上的PyQt5,所以改用Pyt ...
- button点击后出现的边框_用Tkinter制作Python程序的图形用户界面(GUI),打包后比Qt5减少60M(77.5%)(实例63)...
实例61使用PyQt5制作了图形用户界面(GUI).这个香是香,但是打包后的安装文件太大(约80M),感觉有些美中不足啊.由于这个GUI实在简单,从现实角度实在用不着高大上的PyQt5,所以改用Pyt ...
- python习作——简易24点计算器
最近了解了下python的itertools模块,感觉挺强大的.写了个简单的24点计算器做练习.思路很简单,对于一个24点的计算过程,一定可以通过调整顺序和加括号表现为4个操作数3个操作符这样的形式. ...
- python 如何建立图形用户界面_python(五)图形用户界面easyGUI入门
Java数据结构之对称矩阵的压缩算法--- 特殊矩阵 特殊矩阵是指这样一类矩阵,其中有许多值相同的元素或有许多零元素,且值相同的元素或零元素的分布有一定规律.一般采用二维数组来存储矩阵元素.但是,对于 ...
- 【Python】Python库之图形用户界面
- 基于Python的GUI图形用户界面编程
[无限嚣张(菜菜)]:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结. 座右铭:尽人事,听 ...
- Python学习笔记——图形用户界面(2)
Checkbutton控件 Checkbutton控件用来创建复选框.下列是Checkbutton控件的属性. (1)onvalue,offvalue:设置Checkbutton控件的variable ...
- python打开界面是什么样的-python学习笔记(图形用户界面)
GUI python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的 ...
最新文章
- MegaCli查看RAID
- 云供应商安全评估:小心落入陷阱
- JavaScript的JSON转变函数parse[转化为对象] stringfy[转化为字符串]
- java电力巡检系统 项目讲解_公司召开安全巡检系统APP试点项目上线启动会
- 42岁老码农找工作记录
- 做游戏,学编程(C语言) 12 炸弹人
- python 计算机程序设计-计算机编程语言中,为何Python独得恩宠?
- python html模板_Tempy-纯Python语法的HTML模板库
- mysql常用客户端工具
- java编译网络爬虫_自己动手做网络爬虫系列——1 | 学步园
- android 弱网测试工具,app弱网测试及使用的工具
- C语言程序设计实验报告——实验四
- java 定时任务注解
- WordPress 网站基于REST API 开发“微信小程序”实战
- 光纤模块与光纤收发器使用方法
- sql 查询-从浆糊到清晰的过程
- java 微信公众号发红包_【微信支付】现金红包开发者文档
- VB中的二维数组输出的定位
- 互联网注定被抛弃,未来30年属于硬科技!深层逻辑是这样的
- Splunk健康检查orphaned searches
热门文章
- 计算机一直显示配置更新失败怎么办,电脑更新新系统的时候出现配置更新失败问题怎么办...
- 计算机论文研究思路怎么写,论文的研究思路模板范文 课题研究思路怎么写
- 高配置服务器组装电脑,小白DIY装机需睁大眼睛!点评几款网购组装电脑主机配置单...
- 二进制与base64
- word2016 图片去底灰_Word2016中为图片去除背景的方法
- 微信小程序之使用云存储
- 在线思维导图的制作教程分享,帮你快速掌握绘制要领
- 编码器/译码器(Verilog HDL)|计算机组成
- 所有计算机都可以安装win7,t570都可以装win7系统吗_win7 64位系统所有电脑都能装吗...
- win10系统重装教程