使用python的tkinter库自制计算器ui界面
原理
tkinter库
主要使用label和button,具体了解看教程https://www.cnblogs.com/shwee/p/9427975.html
eval函数
这个函数能把字符串转化为代码执行,在这里对于简化代码很有帮助。
https://www.runoob.com/python/python-func-eval.html
源代码
import tkinter as tk
import tkinter.messagebox
root = tk.Tk()
root.title("calcutor")
equ = tk.StringVar()
equ.set("")
def backspace():
var = equ.get()
flag = 0
flag += var.count("+")
flag += var.count("-")
flag += var.count("*")
flag += var.count("/")
if "=" in var and flag <= 1:
k = var.index("=")
equ.set(var[:k])
else:
equ.set(equ.get()[:-1])
flag = 0
def show(push_var):
equ.set(equ.get()+str(push_var))
def clear():
equ.set("")
def calculate():
var=equ.get()
if "=" in var:
k=var.index("=")
equ.set(var[k+2:])
try:
result = eval(equ.get())
equ.set(equ.get()+ "=\n" + str(result))
except Exception:
tkinter.messagebox.showerror(title='fail', message='check your input please')
l=tk.Label(root,bg='black',fg='white',width=25,height=2,relief="raised",textvariable=equ)
l.grid(row=0,column=0,padx=5,pady=5,columnspan=4)
tk.Button(root,text="C",width=5,command=clear).grid(row=1,column=0)
tk.Button(root,text="÷",width=5,command=lambda:show("/")).grid(row=1,column=1)
tk.Button(root,text="x",width=5,command=lambda:show("*")).grid(row=1,column=2)
tk.Button(root,text="DEL",width=5,command=backspace).grid(row=1,column=3)
tk.Button(root,text="7",width=5,command=lambda:show("7")).grid(row=2,column=0)
tk.Button(root,text="8",width=5,command=lambda:show("8")).grid(row=2,column=1)
tk.Button(root,text="9",width=5,command=lambda:show("9")).grid(row=2,column=2)
tk.Button(root,text="-",width=5,command=lambda:show("-")).grid(row=2,column=3)
tk.Button(root,text="4",width=5,command=lambda:show("4")).grid(row=3,column=0)
tk.Button(root,text="5",width=5,command=lambda:show("5")).grid(row=3,column=1)
tk.Button(root,text="6",width=5,command=lambda:show("6")).grid(row=3,column=2)
tk.Button(root,text="+",width=5,command=lambda:show("+")).grid(row=3,column=3)
tk.Button(root,text="1",width=5,command=lambda:show("1")).grid(row=4,column=0)
tk.Button(root,text="2",width=5,command=lambda:show("2")).grid(row=4,column=1)
tk.Button(root,text="3",width=5,command=lambda:show("3")).grid(row=4,column=2)
tk.Button(root,text="=",width=5,height=2,command=calculate).grid(row=4,column=3,rowspan=2)
tk.Button(root,text="%",width=5,command=lambda:show("%")).grid(row=5,column=0)
tk.Button(root,text="0",width=5,command=lambda:show("0")).grid(row=5,column=1)
tk.Button(root,text=".",width=5,command=lambda:show(".")).grid(row=5,column=2)
root.mainloop()
效果
细节
1.除法显示为"/"。
2.支持连续运算。
3.delet键删除会判断有几个运算符,然后再决定删除等号后的所有字符还是结尾一个字符。
使用python的tkinter库自制计算器ui界面的更多相关文章
- Python+PyQT5的子线程更新UI界面的实例《新手必学》
今天小编就为大家分享一篇Python+PyQT5的子线程更新UI界面的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧子线程里是不能更新UI界面的,在移动端方面.Android的U ...
- deepin下安装python的Tkinter库
在Linux下,如果需要编写界面应用,并且此界面应用对性能的要求不是很高,一般可以使用Python解决.Python中可以使用自带的Tkinter库或者是第三方的Wxpython库,当然Tkinter ...
- tkinter 实现爬虫的UI界面
使用python的内置模块tkinter编写了爬取51Ape网站(无损音乐的百度云链接)的UI界面 tkinter入门简单, 但同时在编写的过程中因为文档的缺少很不方便. 下面是UI界面模块的编写,由 ...
- Linux下使用Python的Tkinter库出现的No module named _tkinter问题
这是由于python的版本没有包含tkinter的模块,只需要把tk的package安装就可以了. 一般在linux才出现,windows版本一般已经包含了tkinter模块.
- 程序猿使用Python的tkinter库进行GUI编程肯定要会的事件处理
事件类型用户通过鼠标.键盘.游戏控制设备在与图形界面交互时,就会触发事件.tkinter事件通常采用了将事件名称放置于尖括号内的字符串表示,尖括号中的内容我们称之为事件类型.事件类型有其通用的定义方式 ...
- Python:GUI库tkinter(三)
这一章是对前两章的总结: Python:GUI库tkinter(一) Python:GUI库tkinter(二) 前两章是对控件的介绍,第一章可以知道各控件使用时的具体参数,第二章以具体的例子展示了每 ...
- Python:GUI库tkinter(二)
学习自: Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) - 洪卫 - 博客园 Tkinter简明教程 - 知乎 TkDocs_官方文档 一个Tkinter库较为全面的总结,很 ...
- python小实例——tkinter实战(计算器)
一.完美计算器实验一 import tkinter import math import tkinter.messagebox class calculator: #界面布局方法 def __init ...
- python 各种开源库
测试开发 来源:https://www.jianshu.com/p/ea6f7fb69501 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 sel ...
- Python GUI - tkinter
目录: Tkinter 组件 标准属性 几何管理 代码实例: 1. Label & Button 2. Entry & Text 3.Listbox列表 4.Radiobutton单选 ...
随机推荐
- 【MOOC】北京理工大学Python网络爬虫与信息提取慕课答案-综合挑出了一些很难评的慕课测验题
1 Requests库中的get()方法最常用,下面哪个说法正确? ...
- 【工具】VScode|Linux下 VScode 调试 Python 项目、模块、包的方法
使用过 Anaconda.Jupyter.Pycharm.VScode.VS2022.pdb 这几个 IDE 去编写 python 项目或者维护 python 环境,各有各的优缺点,但 VScode ...
- 原生JS表格数据常用总结
主要是在数据报表这块, 做了好几年发现, 其实用户最终想要看的并不是酷炫的BI大屏, 而是最基础也是最复杂的 中国式报表. 更多就是倾向于从表格中去获取数据信息, 最简单的就是最好的, 于是还是来总结 ...
- 开源我的一款自用AI阅读器,引流Web前端、Rust、Tauri、AI应用开发
前沿 - 为什么要做这个开源软件 作为一个典型的前端开发者,去年在为公司调研Rust前端工具链.LLM应用开发技术体系的时候,对这类技术领域产生了浓厚的兴趣,也是出于早期曾经是一名Android移动应 ...
- 【译】.NET Aspire 和 Azure Functions 集成预览版
您是否曾经为 serverless 技术集成到您现有的 .NET 项目中而挣扎过?Visual Studio 的最新更新已经覆盖了该领域.向 .NET Aspire 与 Azure Functions ...
- 计算机组成原理 L02 指令集体系结构(ISA)复习-1
计算机组成原理 L02 指令集体系结构(ISA)复习-1 复习-1 用作例题/课后题整理 复习-2 用作理论知识点整理 如何使用大常数 由于大数值范围:[-2^31, 2^31-1],而I型指令常数字 ...
- netcore 使用mongodb
docker 安装mongodb:docker pull mongo 运行容器 docker run -d -p 27017:27017 --name mongo01 -v /docker/mongo ...
- 在MySQL数据库中保存布尔型数据
在存储数据时,经常会用到"是"."否"或者"有"."无"这种数据,这种时候就要应用布尔型这种数据类型了.那如何在M ...
- CentOS 7 系统调优深度指南
从内核参数.资源分配.存储性能到网络优化,覆盖全维度调优策略,并强调稳定性保障. 一.调优核心维度与操作命令 1. 内核参数调优 (/etc/sysctl.conf) bash # 编辑配置文件 vi ...
- JavaWeb 中的 HTTP 基础知识
概念:超文本传输协议,规定了浏览器和服务器之间数据传输的规则. 特点: 基于TCP协议,面向连接,更安全 基于请求-响应模型,一次请求对应一次响应 是无状态的协议,对事务处理没有记忆能力.每次请求-响 ...