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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • springboot设置context_spring动态注入bean

    springboot设置context_spring动态注入bean2.0之前可以通过在配置文件中加入配置server.context-path实现。如:server.context-path=/2.0后通过在配置文件中加入配置server.servlet.context-path实现。如: server.servlet.context-path=/   …

    2022年9月17日
    1
  • 大数据监控平台实践之路

    大数据监控平台实践之路大数据监控平台实践之路一、监控体系业务层:应用层:系统层:二、架构设计Telegraf:input:output:调度频率:服务启动:InfluxDB:服务启动:常用命令:Grafana:Grafana主要特性:简单使用介绍:原文地址:大数据监控平台实践之路一、监控体系监控粒度、监控指标完整性、监控实时性是评价监控系统的三要素。从分层体系可以把监控系统分为三个层次:业务层:业务系统…

    2022年5月27日
    30
  • DOM笔记(三):Element接口和HTMLElement接口

    DOM笔记(三):Element接口和HTMLElement接口

    2021年9月2日
    58
  • java怎么运行_怎样启动JAVA?「建议收藏」

    java怎么运行_怎样启动JAVA?「建议收藏」展开全部在Android中启动Java程序其实有很多种方式,现总结如下一、在Android应用程序中e69da5e887aa62616964757a686964616f31333363373732发送Intent启动Android应用程序这个方式最简单,最常用。在此不在累述。关于Intent的更多内容请阅读《Intent技术简介》二、在shell控制台通过am命令发送Intent来启动Androi…

    2022年7月7日
    42
  • Fvwm 笔记「建议收藏」

    Fvwm 笔记「建议收藏」Fvwm笔记 Fvwm笔记Fvwm的安装和启动透明效果的实现截图和配置文件http://learn.tsinghua.edu.cn:8080/2001315450/fvwm_frame.htmlFvwm的安装和启动首先安装fvwm2。然后将.Xinitrc文件中其他窗口管理器的启动命令…

    2022年10月3日
    2
  • RangeValidator 控件

    RangeValidator 控件RangeValidator控件用于检测用户输入的值是否介于两个值之间。可以对不同类型的值进行比较,比如数字、日期以及字符。我们一般会用来验证输入的年龄或者考试的分数等。下面我们一块看看RangeValidator的属性:属性描述 BackColor 背景颜色 ControlToValidate

    2022年7月12日
    16

发表回复

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

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