python制作小程序制作流程,用python编写一个小程序

news2024/11/15 23:53:03

这篇文章主要介绍了python制作小程序代码宠物运输,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

 

1 importtkinter2 importtkinter.messagebox3 importmath4 classJSQ:5

6

7 def __init__(self):8 #创建主界面

9 self.root =tkinter.Tk()10 self.root.minsize(270, 330)11 self.root.maxsize(270, 330)12 self.root.title('小可乐的计算器')13 #定义一个变量赋值给页面label

14 self.result =tkinter.StringVar()15 #界面先显示个0

16 self.result.set(0)17 #设置一个全局变量 运算数字和符号的列表

18 self.lists =[]19 #添加一个判断是否按下运算符号的标志

20 self.isPressSign =False21 #添加一个判断是否运算完毕的标志,如果运算完毕在获取数字的方法中会清空上一轮运算结果

22 self.islistsclear =False23 #添加一个判断百分号是否使用的功能

24 self.isbaifenhao =False25 #为了下面的百分号方法使用(在百分号中为按下运算符号之后的数字)

26 self.num1 = ''

27 #定义一个全局变量(获取百分好的结果)为了在"=’运算的时候输出

28 self.result3 =None29 #获取运算符号之前的数字

30 self.num = ''

31 #获取运算符号给百分好方法使用

32 self.sign1 = ''

33 self.layout()34 self.menubar()35 #将窗口一直显示

36 self.root.mainloop()37

38 defmenubar(self):39 #创建总菜单

40 allmenu =tkinter.Menu(self.root)41 #创建子菜单

42 filemenu = tkinter.Menu(allmenu, tearoff=0)43 #在子菜单里添加文件

44 filemenu.add_command(label='标准型(T) Alt+1',command = lambda: self.func2())45 filemenu.add_command(label='科学性(S) Alt+2',command = lambda: self.func2())46 filemenu.add_command(label='程序员(p) Alt+3',command = lambda: self.func2())47 filemenu.add_command(label='统计信息(A) Alt+4',command = lambda: self.func2())48 #创建分割线

49 filemenu.add_separator()50 filemenu.add_command(label='历史记录(Y) Ctrl+H',command = lambda: self.func2())51 filemenu.add_command(label='数学分组(I)',command = lambda: self.func2())52 filemenu.add_separator()53 filemenu.add_command(label='基本(B) Ctrl+F4',command = lambda: self.func2())54 filemenu.add_command(label='单位转换(U) Ctrl+U',command = lambda: self.func2())55 filemenu.add_command(label='日期计算(D) Ctrl+E',command = lambda: self.func2())56 #在子菜单里再创建一个菜单

57 filemenunei = tkinter.Menu(filemenu, tearoff=0)58 #在子菜单里的菜单添加文件

59 filemenunei.add_command(label='抵押(M)',command = lambda: self.func2())60 filemenunei.add_command(label='汽车租赁(V)',command = lambda: self.func2())61 filemenunei.add_command(label='油耗(mpg)(F)',command = lambda: self.func2())62 filemenunei.add_command(label='油耗(1/100km)(U)',command = lambda: self.func2())63 #将子菜单里的菜单添加到子菜单里

64 filemenu.add_cascade(label='工作表(W)', menu=filemenunei)65 #添加退出功能

66 filemenu.add_command(label='退出', command=self.root.quit)67 #将子菜单添加到总菜单里

68 allmenu.add_cascade(label='查看(V)', menu=filemenu)69 #再创建一个子菜单

70 editmenu = tkinter.Menu(allmenu, tearoff=0)71 #在子菜单里添加文件

72 editmenu.add_command(label='复制(C)',command = lambda: self.func2())73 editmenu.add_command(label='粘贴(P)',command = lambda: self.func2())74 #创建分割线

75 editmenu.add_separator()76 #在子菜单里创建一个菜单

77 editmenunei = tkinter.Menu(editmenu, tearoff=0)78 #在子菜单里的菜单添加文件

79 editmenunei.add_command(label='复制历史记录(I)', stat='disable')80 editmenunei.add_command(label='编辑(E) F2', stat='disable')81 editmenunei.add_command(label='取消编辑(N) Esc', stat='disable')82 editmenunei.add_command(label='清除(L) Ctrl+Shift+D', stat='disable')83 #将子菜单里的菜单添加到子菜单

84 editmenu.add_cascade(label='历史记录(H)', menu=editmenunei)85 #将子菜单添加到总菜单

86 allmenu.add_cascade(label='编辑(E)', menu=editmenu)87 #创建第三个子菜单

88 helpmenu = tkinter.Menu(allmenu, tearoff=0)89 #在第三个子菜单里添加文件

90 helpmenu.add_command(label='查看帮助(v) F1',command = lambda: self.func2())91 #创建分割线

92 helpmenu.add_separator()93 helpmenu.add_command(label='关于计算器(A)',command = lambda: self.func2())94 #将第三个子菜单添加到总菜单中

95 allmenu.add_cascade(label='帮助(H)', menu=helpmenu)96 #将总菜单布局到主窗口

97 self.root.config(menu=allmenu)98

99 #下面代码用于页面布局

100 deflayout(self):101 #显示结果的标签

102 label = tkinter.Label(self.root, textvariable=self.result, bg='white', font=('黑体', 10), anchor='e')103 label.place(x=20, y=10, width=230, height=30)104

105 btnmc = tkinter.Button(self.root, text='MC',command = lambda: self.func2())106 btnmc.place(x=20, y=50, width=30, height=30)107

108 btnmr = tkinter.Button(self.root, text='MR',command = lambda: self.func2())109 btnmr.place(x=70, y=50, width=30, height=30)110

111 btnms = tkinter.Button(self.root, text='MS',command = lambda: self.func2())112 btnms.place(x=120, y=50, width=30, height=30)113

114 btnmjia = tkinter.Button(self.root, text='M+',command = lambda: self.func2())115 btnmjia.place(x=170, y=50, width=30, height=30)116

117 btnmjian = tkinter.Button(self.root, text='M-',command = lambda: self.func2())118 btnmjian.place(x=220, y=50, width=30, height=30)119

120 btnjiantou = tkinter.Button(self.root, text='←', command=lambda: self.jiantou())121 btnjiantou.place(x=20, y=90, width=30, height=30)122

123 btnce = tkinter.Button(self.root, text='CE', command=lambda: self.CE())124 btnce.place(x=70, y=90, width=30, height=30)125

126 btnc = tkinter.Button(self.root, text='C', command=lambda: self.clears())127 btnc.place(x=120, y=90, width=30, height=30)128

129 btnzhengfu = tkinter.Button(self.root, text='±', command=lambda: self.zhenffu())130 btnzhengfu.place(x=170, y=90, width=30, height=30)131

132 btnkaigen = tkinter.Button(self.root, text='√', command=lambda: self.sqrts())133 btnkaigen.place(x=220, y=90, width=30, height=30)134

135 btn7 = tkinter.Button(self.root, text='7', command=lambda: self.pressNum('7'))136 btn7.place(x=20, y=130, width=30, height=30)137

138 btn8 = tkinter.Button(self.root, text='8', command=lambda: self.pressNum('8'))139 btn8.place(x=70, y=130, width=30, height=30)140

141 btn9 = tkinter.Button(self.root, text='9', command=lambda: self.pressNum('9'))142 btn9.place(x=120, y=130, width=30, height=30)143

144 btnchu = tkinter.Button(self.root, text='/', command=lambda: self.pressCompute('/'))145 btnchu.place(x=170, y=130, width=30, height=30)146

147 btnbaifen = tkinter.Button(self.root, text='%', command=lambda: self.baifenhao())148 btnbaifen.place(x=220, y=130, width=30, height=30)149

150 btn4 = tkinter.Button(self.root, text='4', command=lambda: self.pressNum('4'))151 btn4.place(x=20, y=170, width=30, height=30)152

153 btn5 = tkinter.Button(self.root, text='5', command=lambda: self.pressNum('5'))154 btn5.place(x=70, y=170, width=30, height=30)155

156 btn6 = tkinter.Button(self.root, text='6', command=lambda: self.pressNum('6'))157 btn6.place(x=120, y=170, width=30, height=30)158

159 btncheng = tkinter.Button(self.root, text='*', command=lambda: self.pressCompute('*'))160 btncheng.place(x=170, y=170, width=30, height=30)161

162 btnfenshu = tkinter.Button(self.root, text='1/X', command=lambda: self.fenshu())163 btnfenshu.place(x=220, y=170, width=30, height=30)164

165 btn1 = tkinter.Button(self.root, text='1', command=lambda: self.pressNum('1'))166 btn1.place(x=20, y=210, width=30, height=30)167

168 btn2 = tkinter.Button(self.root, text='2', command=lambda: self.pressNum('2'))169 btn2.place(x=70, y=210, width=30, height=30)170

171 btn3 = tkinter.Button(self.root, text='3', command=lambda: self.pressNum('3'))172 btn3.place(x=120, y=210, width=30, height=30)173

174 btnjian = tkinter.Button(self.root, text='-', command=lambda: self.pressCompute('-'))175 btnjian.place(x=170, y=210, width=30, height=30)176

177 btndenghao = tkinter.Button(self.root, text='=', command=lambda: self.pressEqual())178 btndenghao.place(x=220, y=210, width=30, height=70)179

180 btn0 = tkinter.Button(self.root, text='0', command=lambda: self.pressNum('0'))181 btn0.place(x=20, y=250, width=80, height=30)182

183 btndian = tkinter.Button(self.root, text='.', command=lambda: self.pressNum('.'))184 btndian.place(x=120, y=250, width=30, height=30)185

186 btnjia = tkinter.Button(self.root, text='+', command=lambda: self.pressCompute('+'))187 btnjia.place(x=170, y=250, width=30, height=30)188

189 #数字函数(获取数字的函数)

190 defpressNum(self,num):191 #下面的百分好会用到

192 self.num1 =num193 #判断是否按下运算符号

194 if self.isPressSign ==False:195 pass

196 #如果按下运算符号界面归0

197 else:198 self.result.set(0)199 self.isPressSign =False200 #判断运算是否完毕

201 if self.islistsclear ==False:202 #获取面板上原有的数字

203 oldNum =self.result.get()204 #判断原有数字是否为零

205 if oldNum == '0':206 #将传入的数字显示

207 self.result.set(num)208 else:209 #原来的数字加上现在输入的数字

210 newNum = oldNum +num211 self.result.set(newNum)212 #运算完毕界面自动清空

213 else:214 #lists.clear()#如果添加这行代码就不能在上一轮运算结果的基础上运算了

215 self.result.set('0')216 self.islistsclear =False217 self.result.set(num)218

219 #运算操作(获取运算符号然后将数字和符号添加到列表中)

220 defpressCompute(self,sign):221 #获取界面上的数字

222 ifTrue:223 #获取输入运算符之前的数字

224 self.num =self.result.get()225 #将数字加入列表之中

226 self.lists.append(self.num)227 #将运算符加入到列表之中

228 self.lists.append(sign)229 #将运算符赋值给sign1(下面的百分号方法会用到)

230 self.sign1 =sign231 #将是否按下运算符号标志改成True

232 self.isPressSign =True233 #在刚开始的时候添加一个负号(-)用于正负好转换使用

234 #如果列表第一位为0

235 if self.lists[0] == '0':236 #如果列表第二位为"-’

237 if self.lists[1] == '-':238 self.result.set('-')239 #设置运算符号的状态

240 self.isPressSign =False241

242 #获取运算结果(将列表内的值转换为字符串,然后将字符串用python代码执行)

243 defpressEqual(self):244 #获取当前页面的数字

245 curnum =self.result.get()246 self.lists.append(curnum)247 #将列表中的数据转换为字符串

248 computeStr = ''.join(self.lists)249 #将字符串用python代码执行

250 endNum =eval(computeStr)251 #界面显示结果

252 self.result.set(endNum)253 #如果百分号标志触发

254 if self.isbaifenhao ==True:255 #界面显示self.result3

256 self.result.set(self.result3)257 #运算结束后将列表清空

258 self.lists.clear()259 #将运算标志改成True

260 self.islistsclear =True261

262 #清空运算

263 defclears(self):264 self.lists.clear()265 self.result.set('0')266

267 #删除上一位数字

268 defCE(self):269 self.result.set('0')270

271 #用于更改数的正负值

272 defzhenffu(self):273 self.result1 =self.result.get()274 self.result.set(float(self.result1) * (-1))275 self.islistsclear =True276

277 #用于开平方运算

278 defsqrts(self):279 result1 =self.result.get()280 self.result.set(math.sqrt(float(result1)))281 self.lists.clear()282 self.islistsclear =True283

284 #用于求x/9的值

285 deffenshu(self):286 result1 =self.result.get()287 self.result.set(1 /float(result1))288 self.islistsclear =True289

290 #用于求百分号功能的方法

291 defbaifenhao(self):292 listss =[]293 #判断如果输入一个数没输运算符号的话界面自动归零

294 if len(self.lists) < 1:295 self.result.set(0)296 else:297 #获取输入运算符号之前的数字

298 a1 =float(self.num)299 #获取运算符号

300 a2 =self.sign1301

302 #再次获取输入运算符号之前的数字

303 a3 =float(self.num)304

305 a4 = '*'

306 #算出最后一个数字的百分数

307 a6 = float(self.num1) / 100

308

309 #算出百分号的那个结果

310 resultmuqian = a3 *a6311 #总结果

312 resultbai = str(a1) + a2 + str(a3) + a4 +str(a6)313 #将字符串用python代码执行

314 self.result3 =eval(resultbai)315 #在界面上按下%符号是显示的结果

316 self.result.set(resultmuqian)317 #改变百分号的标志

318 self.isbaifenhao =True319

320 #箭头的意义删除后一位数字

321 defjiantou(self):322 result1 =self.result.get()323 result1 =list(result1)324 del result1[-1]325 result1 =str(result1)326 self.result.set(result1)327

328 deffunc2(self):329 tkinter.messagebox.askokcancel(title = '略过',message='没实现')330

331

332 myjsq = JSQ()

好了,以上便是利用Python代码实现一个计算器小程序的过程。

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

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

相关文章

CAM,PradCAM,layer CAM(可解释性分析方法)

目录 1.CAM 1.1作用 1.2应用实例 1.3CAM的特点 1.4CAM的思路 1.5CAM的缺点 2.GradCAM 2.1和GAM的区别及思路 2.2应用面 2.3一个延深&#xff08;解决模型偏见&#xff09; 2.4缺点 3.Grad CAM 4.Score CAM 5.layer CAM 参考文献 1.CAM 1.1作用 CAM不不光可以分类还…

前端JS实用操作符,一些骚操作✨

目录 0、!! 双重逻辑非操作符 &#x1f4da; 1、?? 操作符 空值合并/空判断 ✅ 2、?. 可选链运算符&#x1f50d; 3、?? 操作符 逻辑空值赋值运算符 &#x1f49a; 4、三元运算符 &#x1f4d7; 5、~~ 操作符 双位运算符 &#x1f528; 6、&&与 ||或 短…

在java中操作redis_Data

1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.配置Redis数据源 redis:host: ${sky.redis.host}port: ${sky.redis.port}password: ${sk…

揭秘程序员最喜欢的5个高薪工作

大家好&#xff0c;这里是程序员晚枫。想了解更多精彩内容&#xff0c;快来关注程序员晚枫 今天给大家推荐5个适合程序员的高薪岗位。 01 推荐岗位 以下是5个工资最高的程序员工作&#xff1a; 数据科学家&#xff1a;数据科学家是负责数据收集、处理、分析和报告的专业人员。…

Markdown学习简记

目录 一、写Markdown的第0步 二、语法须知 标题 粗体强调 斜体 斜体同时粗体 删除线 高亮 代码 代码块 引用块 无序列表 有序列表 链接 表格 图片 分割线 目录生成 内联HTML代码 Typora常用快捷键 Typora的主题样式与检查元素 一、写Markdown的第…

MySQL事务篇:ACID原则、事务隔离级别及事务机制原理剖析

引言 众所周知&#xff0c;MySQL数据库的核心功能就是存储数据&#xff0c;通常是整个业务系统中最重要的一层&#xff0c;可谓是整个系统的“大本营”&#xff0c;因此只要MySQL存在些许隐患问题&#xff0c;对于整个系统而言都是致命的。那此刻不妨思考一个问题&#xff1a; …

录像编辑软件—— Camtasia Studio 2023下载安装和激活的基本流程

Camtasia Studio 2023是一款简单易用的高清录屏和视频编辑软件&#xff0c;拥有录制屏幕和配音、视频的剪辑和过场动画、添加说明字幕和水印、制作视频封面和菜单、视频压缩和播放。 Camtasia Studio能在任何颜色模式下轻松地记录 屏幕动作&#xff0c;包括影像、音效、鼠标移…

C语言案例 按序输出三个整数-02

题目&#xff1a;输入三个整数a,b,c,按从小到大的顺序输出 步骤一&#xff1a;定义程序的目标 编写一个C程序&#xff0c;随机输入三个整数&#xff0c;按照从小到大的顺序输出。 步骤二&#xff1a;程序设计 整个程序由三个模块组成&#xff0c;第一个为scanf输入函数模块&a…

[FlareOn6]FlareBear

前言 apk的逆向&#xff0c;没有壳&#xff0c;但可能做的不是太多&#xff0c;没能想到整个算法的运作原理 分析 搜索flag会发现存在这么一个函数&#xff0c;那么显示flag的时候应该是熊会跳舞显示flag,只要满足熊happy和ecsstatic就可以&#xff0c;happy只要一直存在点击…

集中/本地转发、AC、AP

1.ADSL ADSL MODEM&#xff08;ADSL 强制解调器&#xff09;俗称ADSL猫 ADSL是一种异步传输模式&#xff08;ATM)。ADSL是指使用电话线上网&#xff0c;需要专用的猫&#xff08;Modem)&#xff0c;在上网的时候高频和低频分离&#xff0c;所以上网电话两不耽误&#xff0c;速…

后端进阶之路——万字总结Spring Security与数据库集成实践(五)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ 解决算法&#xff0c;一个专栏就够了★ ★ 架…

K8S系列文章之 一键部署K8S环境

部署的原理是基于自动化部署工具 Ansible 实现的&#xff0c;需要提前安装Ansible 并配置下主机节点环境 1. 安装 Ansible 首先ansible基于python2.X 环境&#xff0c;默认centos都已经安装好了python2环境 // 最好更新下库 // yum update yum install -y epel-release yum i…

ctfshow-web5

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 首先看到代码&#xff0c;发现要求v1必须是字符串&#xff0c;v2必须是数字&#xff0c;并且对v1和v2的md5弱相等&#xff0c;也就是&#xff0c;只比较字符串开头是否相等&#xff0c;那么就需要找到两个md5开…

Mac系统下使用远程桌面连接Windows系统

一、远程桌面工具 Microsoft Remote Desktop 二、下载地址 https://go.microsoft.com/fwlink/?linkid868963 三、下载并安装 四、添加远程PC PC name:云服务器IP。 User account: 添加系统用户 PC name&#xff1a;远程桌面 IP 地址User account&#xff1a;可以选择是…

RabbitMQ 教程 | 第11章 RabbitMQ 扩展

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

机器学习、人工智能、深度学习三者的区别

目录 1、三者的关系 2、能做些什么 3、阶段性目标 1、三者的关系 机器学习、人工智能&#xff08;AI&#xff09;和深度学习之间有密切的关系&#xff0c;它们可以被看作是一种从不同层面理解和实现智能的方法。 人工智能&#xff08;AI&#xff09;&#xff1a;人工智能是一…

【网络编程·传输层】UDP和TCP的报头

目录 一、端口号划分 二、部分指令 1、pidof&#xff08;用于查看进程id&#xff09; 2、netstat&#xff08;查看网络状态&#xff09; 三、UDP协议 1、UDP协议格式 2、UDP协议如何进行封装、解包、分用 2.1封装、解包 2.2分用 3、UDP协议的特点 3.1UDP协议的特点 …

外部链接跳转到vue项目传递参数实现单点登录

1、问题背景描述&#xff1a; 我有一个困扰了很久项目需求&#xff0c;前台门户用的MVC&#xff0c;前台登录之后需要能点击某个按钮就能进入后台vue开发的前端项目&#xff0c;不需要重新登录。这个需求中mvc项目相对于vue项目来说是外部链接&#xff0c;他要跳转到vue项目&a…

HarmonyOS应用开发的新机遇与挑战

HarmonyOS 4已经于2023年8月4日在HDC2023大会上正式官宣。对广大HarmonyOS开发者而言&#xff0c;这次一次盛大的大会。截至目前&#xff0c;鸿蒙生态设备已达7亿台&#xff0c;HarmonyOS开发者人数超过220万。鸿蒙生态充满着新机遇&#xff0c;也必将带来新的挑战。 HarmonyO…

卷积神经网络实现MNIST手写数字识别 - P1

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营-第P1周&#xff1a;实现mnist手写数字识别&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同…