kivy小程序——计算器

kivy小程序——计算器fromkivy appimportApp coreimportwi uix widgetimport propertiesim langimportBu core windowimport size 500 700Builder load string

from kivy.app import App from kivy.core import window from kivy.uix.widget import Widget from kivy.properties import ObjectProperty from kivy.lang import Builder from kivy.core.window import Window Window.size = 500, 700 Builder.load_string(""" <MyLayout>: BoxLayout: orientation: 'vertical' size:root.width,root.height TextInput: id:calc_input text:"0" font_name:"./SIMLI.TTF" halign:"right" font_size: 65 size_hint: 1, .15 GridLayout: cols:4 rows:5 Button: size_hint: .2, .2 font_size:32 text:"%" font_name:"./SIMLI.TTF" Button: size_hint: .2, .2 font_size:32 text:"C" font_name:"./SIMLI.TTF" on_press:root.clear() Button: id:clear size_hint: .2, .2 font_size:32 text:"<<" font_name:"./SIMLI.TTF" on_press:root.remove() Button: size_hint: .2, .2 font_size:32 text:"/" font_name:"./SIMLI.TTF" on_press:root.math_sign("/") Button: size_hint: .2, .2 font_size:32 text:"7" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(7) Button: size_hint: .2, .2 font_size:32 text:"8" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(8) Button: size_hint: .2, .2 font_size:32 text:"9" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(9) Button: size_hint: .2, .2 font_size:32 text:"x" font_name:"./SIMLI.TTF" on_press:root.math_sign("*") Button: size_hint: .2, .2 font_size:32 text:"4" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(4) Button: size_hint: .2, .2 font_size:32 text:"5" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(5) Button: size_hint: .2, .2 font_size:32 text:"6" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(6) Button: size_hint: .2, .2 font_size:32 text:"-" font_name:"./SIMLI.TTF" on_press:root.math_sign("-") Button: size_hint: .2, .2 font_size:32 text:"1" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(1) Button: size_hint: .2, .2 font_size:32 text:"2" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(2) Button: size_hint: .2, .2 font_size:32 text:"3" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(3) Button: size_hint: .2, .2 font_size:32 text:"+" font_name:"./SIMLI.TTF" on_press:root.math_sign("+") Button: size_hint: .2, .2 font_size:32 text:"+/-" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.pos_neg() Button: size_hint: .2, .2 font_size:32 text:"0" font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.button_press(0) Button: size_hint: .2, .2 font_size:32 text:"." font_name:"./SIMLI.TTF" background_color:157/255, 157/255, 157/255,1 on_press:root.dot() Button: size_hint: .2, .2 font_size:32 text:"=" font_name:"./SIMLI.TTF" on_press:root.equals() """ ) class MyLayout(Widget): def clear(self): self.ids.calc_input.text = '0' def button_press(self, button): prior = self.ids.calc_input.text if "Error" in prior: prior = '' if prior == "0": self.ids.calc_input.text = '' self.ids.calc_input.text = f'{button}' else: self.ids.calc_input.text = f'{prior}{button}' def remove(self): prior = self.ids.calc_input.text prior = prior[:-1] self.ids.calc_input.text = prior def dot(self): prior = self.ids.calc_input.text num_list = prior.split("+") if "+" in prior and "." not in num_list[-1]: prior = f'{prior}.' self.ids.calc_input.text = prior elif "." in prior: pass else: prior = f'{prior}.' self.ids.calc_input.text = prior def math_sign(self, sign): prior = self.ids.calc_input.text self.ids.calc_input.text = f'{prior}{sign}' def equals(self): prior = self.ids.calc_input.text try: answer = eval(prior) self.ids.calc_input.text = str(answer) except: self.ids.calc_input.text = 'Error' """if "+" in prior: num_list = prior.split("+") answer = 0 for number in num_list: answer = answer+float(number) self.ids.calc_input.text = str(answer)""" def pos_neg(self): prior = self.ids.calc_input.text if "-" in prior: self.ids.calc_input.text = f'{prior.replace("-", "")}' else: self.ids.calc_input.text = f'-{prior}' class CalculatorApp(App): def build(self): return MyLayout() if __name__ == '__main__': CalculatorApp().run() 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232998.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php二次开发知识,Discuz二次开发基本知识详细讲解

    php二次开发知识,Discuz二次开发基本知识详细讲解Discuz是国内最流行的论坛软件管理系统,今天小编跟大家分享一篇关于Discuz二次开发基本知识详细讲解,感兴趣的朋友跟小编一起来了解一下吧!一)Discuz!的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。a)Admin:后台管理功能模块b)Api:DZ系统与其它系统之间接口程序c)Archiver:DZ中,用以搜索引擎优化的无图版d)Attachments:DZ中,…

    2022年5月12日
    43
  • ubuntu彻底卸载docker_docker安装win10

    ubuntu彻底卸载docker_docker安装win10删除docker程序记事本新建脚本文件a.ps1,内容如下:$ErrorActionPreference=”SilentlyContinue”kill-force-processname’DockerforWindows’,com.docker.db,vpnkit,com.docker.proxy,com.docker.9pdb,moby-diag-dl,dockerd…

    2022年10月9日
    4
  • Java byte 转化为 String「建议收藏」

    Java byte 转化为 String「建议收藏」1、Java中byte转化为String,代码如下packagenice.com.mian;importjava.io.UnsupportedEncodingException;publicclassStringMain{ publicstaticvoidmain(String[]args)throwsException{ byte[]…

    2022年6月21日
    32
  • intellij idea 激活码[最新免费获取]「建议收藏」

    (intellij idea 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月26日
    59
  • FRP内网穿透_frp内网穿透免杀教程

    FRP内网穿透_frp内网穿透免杀教程时间原因,我将我研究时候的文章分类整理。至于我补充的,如果看不懂就把所有我整理的连接看一遍再结合你们看的心得,应该就可以了。一Frp学习连接1先看:使用frp进行内网穿透-少数派补充:1简单描述就是在你想要访问的主机上和代理主机上都安装frp反向代理软件,你想要访问的主机是frp客户端,代理主机是frp服务端,负责帮你转发的(极个别情况下也不需要代理主机,像p2p模式),配置好ini文件就可以了。2我自己搭建的时候vps是阿里云,客户端是windows10,这样.

    2025年9月23日
    7
  • linux 网口_网络管理员网址

    linux 网口_网络管理员网址Linux12:网络管理文章目录一.网络接口名称规则1.认识网卡2.修改网卡配置文件3.主机名4.网络测试工具一.网络接口名称规则计算机与外界通信的前提是:有网卡(网络适配器NAT)注意:虚拟机的总内存,不能超过真机服务器和客户机:谁提供服务,谁就是服务器1.认识网卡#ls /etc/sysconfig/network-scripts/补充:网络管理器NetworkManager,动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活查看该服务的运行状况:#

    2022年8月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号