Python15行代码 tkinter模块 写计算机

news2024/11/18 5:45:20

之前去备战csp-j了 也有一段时间没更新了

结果白名单没捞着 还差点被我妈打喜

今天闲来无事 写个计算器玩玩

_____________________________________________________________________________

老规矩 先放代码

from tkinter import *;from math import sqrt;a=Tk();a.geometry('600x600');a.title('苦瓜牌计算器');b=Text(a, font=('微软雅黑',15));b.place(x=0,y=0,width=600,height=200);d=''
def bu(a1,a2,x,y):
    def co():global d;b.insert('end',a1);d += a2
    a3=Button(text=a1,font=('微软雅黑',50),command=co);a3.place(x=x,y=y,width=100,height=100)
bu('1','1',0,200);bu('4','4',0,300);bu('7','7',0,400);bu('0','0',100,500);bu('2','2',100,200);bu('3','3',200,200);bu('5','5',100,300);bu('6','6',200,300);bu('8','8',100,400);bu('9','9',200,400);bu('.','.',500,200);bu('+','+',300,200);bu('(','(',400,400);bu(')',')',400,500);bu('^','**',400,300);bu('-','-',300,300);bu('×','*',300,400);bu('÷','/',300,500);bu('√(', 'sqrt(',400,200)
def jc():global d;b.delete('1.0','end');d=''
def jl():global d;z=b.get('1.0','end-1c');d=d[:-1];b.delete('1.0','end');b.insert('end',z[:-1])
def jd():
    global d
    try:b.insert('end','='+str(eval(d)))
    except ZeroDivisionError:b.insert('end','\n"0"不能作除数')
    except SyntaxError:b.insert('end','\n表达式有误 无法计算')
    except ValueError:b.insert('end','\n数字太大 无法计算本式')
    b.insert('end','\n');d=''
jc0=Button(text='c',font=('微软雅黑',50),command=jc);jc0.place(x=200,y=500,width=100,height=100);jd0=Button(text='=',font=('微软雅黑',50),command=jd);jd0.place(x=0,y=500,width=100,height=100);jl0=Button(text='L',font=('微软雅黑',50),command=jl);jl0.place(x=500,y=300,width=100,hei

接下来是制作过程:

_____________________________________________________________________________

第一步:基础设置

from tkinter import *#导入tkinter模块
from math import sqrt#导入math模块但只使用sqrt函数
a=Tk()#建造窗口a
a.geometry('600x600')#把窗口a的长设为600 宽设为600
a.title('苦瓜牌计算器')#把窗口a的标题改为苦瓜牌计算器
b=Text(a,font=('微软雅黑',15))#在窗口a上建造文本框b 并且在文本框b里输入的字体用微软雅黑并且只有15像素大小
b.place(x=0,y=0,width=600,height=200)#放置文本框b 把位置设为0,0 把大小设为600*200
d=''#建立字符串d

_____________________________________________________________________________

第二步:按钮函数设置

def bu(a1,a2,x,y):
    def co():#定义函数co
        global d#把d改为全局变量
        b.insert('end',a1)#在文本框b里输入形参a1
        d+=a2#在字符串d的结尾加上形参a2
    a3=Button(text=a1,font=('微软雅黑',50),command=co)#创建按钮a3
    a3.place(x=x,y=y,width=100,height=100)#放置a3

_____________________________________________________________________________

第三步:按钮设置

bu('1','1',0,200)
bu('4','4',0,300)
bu('7','7',0,400)
bu('0','0',100,500)
bu('2','2',100,200)
bu('3','3',200,200)
bu('5','5',100,300)
bu('6','6',200,300)
bu('8','8',100,400)
bu('9','9',200,400)
bu('.','.',500,200)
bu('+','+',300,200)
bu('(','(',400,400)
bu(')',')',400,500)
bu('^','**',400,300)
bu('-','-',300,300)
bu('×','*',300,400)
bu('÷','/',300,500)
bu('√(','sqrt(',400,200)

_____________________________________________________________________________

第四步:特殊按钮设置

def jc():#定义函数jc
    global d#把d改为全局变量
    b.delete('1.0','end')#删除文本框b的所有内容
    d=''#重置字符串d
def jl():#定义函数jl
    global d#把d改为全局变量
    z=b.get('1.0','end-1c')#获得文本框b的所有内容
    d=d[:-1]#让字符串d只保留最后一位前的字符
    jc()
    b.insert('end',z[:-1])#让文本框b获得z的最后一位字符前所有的字符
def jd():
    global d#把d改为全局变量
    try:b.insert('end','='+str(eval(d)))
    except ZeroDivisionError:b.insert('end','\n"0"不能作除数')
    except SyntaxError:b.insert('end','\n表达式有误 无法计算')
    except ValueError:b.insert('end','\n数字太大 无法计算本式')
    b.insert('end','\n');d=''
jc0=Button(text='c',font=('微软雅黑',50),command=jc)
jc0.place(x=200,y=500,width=100,height=100)
jd0=Button(text='=',font=('微软雅黑',50),command=jd)
jd0.place(x=0,y=500,width=100,height=100)
jl0=Button(text='L',font=('微软雅黑',50),command=jl)
jl0.place(x=500,y=300,width=100,height=300)

_____________________________________________________________________________

MVP结算:

        本期字数:3457

        本期质量分:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机械键盘驱动调光DIY--【DAREU】

1 下载键盘对应的驱动,不要装到C盘 达尔优驱动下载中心 2 驱动更改教程 标准模式 键盘功能 鼠标功能 切换灯光 切换配置文件 多媒体 windows快捷键 禁用 Fn 启动程序 文本功能 光标定位 FN模式 灯光效果设置 注意 宏--自定义功能

【SpringCloud】多机部署, 负载均衡-LoadBalance

多机部署, 负载均衡-LoadBalance 1. 负载均衡介绍1.1 问题描述1.2 什么是负载均衡1.3 负载均衡的⼀些实现服务端负载均衡客⼾端负载均衡 2. Spring Cloud LoadBalancer 1. 负载均衡介绍 1.1 问题描述 观察上个章节远程调⽤的代码 根据应⽤名称获取了服务实例列表从列表中选择…

【SQL】未订购的客户

目录 语法 需求 示例 分析 代码 语法 SELECT columns FROM table1 LEFT JOIN table2 ON table1.common_field table2.common_field; LEFT JOIN(或称为左外连接)是SQL中的一种连接类型,它用于从两个或多个表中基于连接条件返回左表…

CSS布局中的定位

一、position 1.static position: static; 默认值,没有定位2 .relative 相对定位:相对自身原来的位置进行偏移 偏移设置:top、left、right、bottom 相对定位元素的规律: 设置相对定位的盒子会相对于它原来的位置,通…

Nature数据库介绍及个人获取Nature文献下载途径

Springer Nature集团是一家全球领先的从事科研、教育和专业出版的机构,也是世界上最大的学术图书出版公司,同时出版全球最具影响力的期刊,也是开放获取领域的先行者。Springer Nature在2015年由Nature出版集团(Nature Portfolio&a…

JS加密=JS混淆?(JS加密、JS混淆,是一回事吗?)

JS加密、JS混淆,是一回事吗? 是的!在国内,JS加密,其实就是指JS混淆。 1、当人们提起JS加密时,通常是指对JS代码进行混淆加密处理,而不是指JS加密算法(如xor加密算法、md5加密算法、…

正点原子——DS100示波器操作手册

目录 基础按键: 快捷键 主界面: 垂直设置: 通道设置: 探头比列: 垂直档位: 垂直偏移: 幅度单位: 水平设置: 触发方式: 测量和运算: 光标测量&am…

面试题:MySQL你用过WITH吗?领免费激活码

感谢Java面试教程的Java多线程文章,点击查看>原文 Java面试教程,发mmm116可获取IDEA-jihuoma 在MySQL中,WITH子句用于定义临时表或视图,也称为公共表表达式(CTE)。它允许你在一个查询中定义一个临时结果…

二叉搜索树 K模型 和 KV模型

🌻个人主页:路飞雪吖~ ✨专栏:C/C 目录 一、二叉搜索树(K模型)的模拟实现 🌟二叉搜索树的概念 🌟二叉搜索树的操作 🌠二叉搜索树的查找 🌠二叉搜索树的插入 &#x…

Docker安装与应用

前言 Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻 量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互 之间…

《程序猿之Redis缓存实战(1) · 基础知识》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

OpenGL ES 绘制一个三角形(2)

OpenGL ES 绘制一个三角形(2) 简述 本节我们基于Android系统,使用OpenGL ES来实现绘制一个三角形。在OpenGL ES里,三角形是一个基础图形,其他的图形都可以使用三角形拼接而成,所以我们就的案例就基于这个开始。 在Android系统中…

添加vscode插件C/C++ snippets,快速生成LVGL .c/.h文件模版

文章目录 一、安装插件二、在安装目录下添加c.json和cpp.json文件①在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 c.json 并填入如下内容:②在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 cpp.json 并填入如下内容…

SQL学习1

24.9.28学习目录 一.数据库1.SQL语句基础2.匹配条件 一.数据库 对于嵌入式的数据库,其使用的是SQLite这种小型数据库; 在ubuntu中的下载方法 //字符界面 sudo apt-get install sqlite3//图形界面 sudo apt-get install sqlitemanSQLite特点&#xff1a…

windows系统中后台运行java程序

在windows系统中后台运行java程序,就是在启动java程序后,关闭命令行行窗口执行。 1、命令行方式 命令行方式运行java程序 启动脚本如下: echo off start java -jar app.jar exit启动后的结果如下 这种方式下,会马上启动一个命…

【RocketMQ】RocketMQ发送不同类型消息

🎯 导读:本文介绍了RocketMQ消息队列系统中的几种消息发送模式及其应用场景,包括同步消息、异步消息以及事务消息。同步消息确保了消息的安全性,但牺牲了一定的性能;异步消息提高了响应速度,适用于对响应时…

搬砖6、Python函数和模块的使用

函数和模块的使用 在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。 可以用Python的程序来…

人工智能开发实战照片智能搜索功能实现

内容提要 项目分析预备知识项目实战 一、项目分析 1、提出问题 随着人民生活水平的提高和手机照相功能的日趋完美,我们不经意中拍摄了很多值得回忆的时刻,一场说走就走的旅行途中也记录下许多令人心动的瞬间,不知不觉之中,我们…

Time-MoE : 时间序列领域的亿级规模混合专家基础模型

Time-MoE : 时间序列领域的亿级规模混合专家基础模型 时间序列预测一直是量化研究和工业应用中的重要课题。随着深度学习技术的发展,大规模预训练模型在自然语言处理和计算机视觉领域取得了显著进展,但在时间序列预测领域,这些模型的规模和运…

【归回预测】归回预测│PSO-ELM与标准ELM多输入预测对比源代码

摘要 本文比较了基于粒子群优化(PSO)和标准极限学习机(ELM)算法的电力负荷多输入预测模型。利用真实电力负荷数据集,对两种方法的预测性能进行了全面的评估,使用了均方误差(MSE)、平…