• 推荐自己的专栏:分享一些Python案例,将所学用出来

一:计算器界面

使用tkinter实现一个支持四则运算的简易图形用户界面计算器

界面和功能

筒易图形用户界面计算器的界面设计如图所示

  • 第一行显示输入的运算表达式;
  • 第二行显示当前输入的操作数或运算结果;
  • 第三行到第七行为计算器按钮。

二:计算器设计思路

思维和设计方法

  • 创建一个继承于Frame的类Calc来实现计算器。

  • 实现界面。在Calc构造函数,创建简易图形用户界面计算器的各个组件对象。

  1. 构造函数中,
    创建两个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)
  1. 使用一个二维列表存储按钮标签
    然后使用嵌套循环的方法创建和布局各个按钮。在循环中定义事件处理函数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时,继续输入当前操作数的下一个数字字符。
  1. 按数字或者小数点按钮键。把输入的字符链接到当前输入操作数之后。
  2. 按 ← 按钮鍵,可以清除当前输入操作数的最后一个字符。
  3. 按 ± 按钮鍵,切换当前输入数的正负号。
  4. 按 C 按钮键,清除当前输入的操作数。
  5. 按返算符 /、×、-、+ 按钮键时,显示到目前为止的输入的运算表达式。
  6. 按 = 按钮键,执行运算,显示运算结果。
  • 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实现简易图形用户界面计算器相关推荐

  1. python编程基础:python 实现GUI(图形用户界面)编程详解

    今天小编就为大家分享一篇python 实现GUI(图形用户界面)编程详解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python支持多种图形界面的第三方库,包括: wxWidge ...

  2. 转:python 实现GUI(图形用户界面)编程

    转:https://blog.csdn.net/dongfei2033/article/details/77971197/ Python支持多种图形界面的第三方库,包括: wxWidgets Qt G ...

  3. gui设置可编辑文本框的回调函数_用Tkinter制作Python程序的图形用户界面(GUI),打包后比Qt5减少60M(77.5%)(实例63)...

    实例61使用PyQt5制作了图形用户界面(GUI).这个香是香,但是打包后的安装文件太大(约80M),感觉有些美中不足啊.由于这个GUI实在简单,从现实角度实在用不着高大上的PyQt5,所以改用Pyt ...

  4. button点击后出现的边框_用Tkinter制作Python程序的图形用户界面(GUI),打包后比Qt5减少60M(77.5%)(实例63)...

    实例61使用PyQt5制作了图形用户界面(GUI).这个香是香,但是打包后的安装文件太大(约80M),感觉有些美中不足啊.由于这个GUI实在简单,从现实角度实在用不着高大上的PyQt5,所以改用Pyt ...

  5. python习作——简易24点计算器

    最近了解了下python的itertools模块,感觉挺强大的.写了个简单的24点计算器做练习.思路很简单,对于一个24点的计算过程,一定可以通过调整顺序和加括号表现为4个操作数3个操作符这样的形式. ...

  6. python 如何建立图形用户界面_python(五)图形用户界面easyGUI入门

    Java数据结构之对称矩阵的压缩算法--- 特殊矩阵 特殊矩阵是指这样一类矩阵,其中有许多值相同的元素或有许多零元素,且值相同的元素或零元素的分布有一定规律.一般采用二维数组来存储矩阵元素.但是,对于 ...

  7. 【Python】Python库之图形用户界面

  8. 基于Python的GUI图形用户界面编程

    [无限嚣张(菜菜)]:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结. 座右铭:尽人事,听 ...

  9. Python学习笔记——图形用户界面(2)

    Checkbutton控件 Checkbutton控件用来创建复选框.下列是Checkbutton控件的属性. (1)onvalue,offvalue:设置Checkbutton控件的variable ...

  10. python打开界面是什么样的-python学习笔记(图形用户界面)

    GUI python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的 ...

最新文章

  1. MegaCli查看RAID
  2. 云供应商安全评估:小心落入陷阱
  3. JavaScript的JSON转变函数parse[转化为对象] stringfy[转化为字符串]
  4. java电力巡检系统 项目讲解_公司召开安全巡检系统APP试点项目上线启动会
  5. 42岁老码农找工作记录
  6. 做游戏,学编程(C语言) 12 炸弹人
  7. python 计算机程序设计-计算机编程语言中,为何Python独得恩宠?
  8. python html模板_Tempy-纯Python语法的HTML模板库
  9. mysql常用客户端工具
  10. java编译网络爬虫_自己动手做网络爬虫系列——1 | 学步园
  11. android 弱网测试工具,app弱网测试及使用的工具
  12. C语言程序设计实验报告——实验四
  13. java 定时任务注解
  14. WordPress 网站基于REST API 开发“微信小程序”实战
  15. 光纤模块与光纤收发器使用方法
  16. sql 查询-从浆糊到清晰的过程
  17. java 微信公众号发红包_【微信支付】现金红包开发者文档
  18. VB中的二维数组输出的定位
  19. 互联网注定被抛弃,未来30年属于硬科技!深层逻辑是这样的
  20. Splunk健康检查orphaned searches

热门文章

  1. 计算机一直显示配置更新失败怎么办,电脑更新新系统的时候出现配置更新失败问题怎么办...
  2. 计算机论文研究思路怎么写,论文的研究思路模板范文 课题研究思路怎么写
  3. 高配置服务器组装电脑,小白DIY装机需睁大眼睛!点评几款网购组装电脑主机配置单...
  4. 二进制与base64
  5. word2016 图片去底灰_Word2016中为图片去除背景的方法
  6. 微信小程序之使用云存储
  7. 在线思维导图的制作教程分享,帮你快速掌握绘制要领
  8. 编码器/译码器(Verilog HDL)|计算机组成
  9. 所有计算机都可以安装win7,t570都可以装win7系统吗_win7 64位系统所有电脑都能装吗...
  10. win10系统重装教程