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)
上一篇 2025年8月25日 下午3:01
下一篇 2025年8月25日 下午3:22


相关推荐

  • 宽字节注入原理分析[通俗易懂]

    宽字节注入原理分析[通俗易懂]什么是宽字节?如果一个字符的大小是一个字节的,称为窄字节;如果一个字符的大小是两个字节的,成为宽字节。像GB2312、GBK、GB18030、BIG5、Shift_JIS等这些编码都是常说的宽字节,也就是只有两字节英文默认占一个字节,中文占两个字节什么是宽字节注入?原理:宽字节注入是利用了mysql的一个特性,即mysql在使用GBK编码时,在url解码时会认为两个字符是一个汉字(前一个ASCII码要大于128,才表示到汉字的范围)通常情况下,一个utf-8编码的汉子占用3个字节,一个GBK编

    2022年10月15日
    4
  • 实现安全登录的两种方法

    实现安全登录的两种方法登录安全——拦截器和过滤器或权限框架的使用本次我们将采用两种方法实现登录的安全性,首先介绍拦截器和过滤器。一、 过滤器和拦截器:过滤器产生的时间/开始工作的时间:进入Tomcat之后,但是在进servlet之前。Interceptor进入了servlet所以拦截器拦截的是动作,而过滤器拦截的是不合理的跳转页面。1、配置和使用拦截器。<mvc:interceptors>&…

    2022年4月19日
    50
  • Stream流、方法引用

    Stream流、方法引用

    2021年5月19日
    135
  • 面试被问到CAS原理,触及知识盲区,脸都绿了!

    面试被问到CAS原理,触及知识盲区,脸都绿了!CAS底层原理想要了解CAS底层原理,那么我们先来了解一下JUC包的一个类即:AtomicInteger。那么这个AtomicInteger有什么用呢?我们平时开发或多或少都会使用到i++这个操作,那么稍微了解多线程的同学都会知道,在多线程环境下,i++操作是线程不安全的操作,譬如下面这段代码:publicclassMain{privateinti=0;publicvoidaddI(){i++;}..

    2022年10月17日
    4
  • 最新Anaconda3的安装配置及使用教程(详细过程)

    最新Anaconda3的安装配置及使用教程(详细过程)最新Anaconda3安装使用Anaconda下载方式一:官网下载方式二:清华镜像下载(推荐)Anaconda安装Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项Anaconda+Jupyter基本上已经是大部分机器学习/数据分析等开发者标配的开发环境,不多介绍,直接进去正题:Anaconda下载方式一:官网下载下载地址传送门:官网首页:https://www.anaconda.com/官网下载页:https://www

    2022年5月8日
    367
  • PyTorch中的转置卷积详解——全网最细

    PyTorch中的转置卷积详解——全网最细前言转置卷积,学名transposedconvolution,在tf和torch里都叫这个。有时在论文里可以看到别人叫它deconvolution(反卷积),但这个名词不合适。因为转置卷积并非directconvolution的逆运算(reverse),并不能还原出原张量。只是从形状上看,其结果的形状等同于逆运算。写这篇文章还是因为网上介绍转置卷积的博客,都讲不清楚,我看了半天还是云里雾里。只能自己手动来一篇了。一、基本运算——错位扫描定义本文中,我们将平时用到的普通卷积,称为dir

    2022年6月21日
    39

发表回复

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

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