首页 > 其他 > 详细

实战计时器(二)

时间:2021-04-05 22:13:47      阅读:45      评论:0      收藏:0      [点我收藏+]
"""
    目的只显示时间是不够的,在要父布局中加一个Label用来显示实时时间,并添加一个Button用来触发事件
"""

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from time import strftime   # 导入时间模块
from kivy.clock import Clock # 导入时间有个schedule_interval方法可以用来每多少秒调用一次方法(方法,秒)


# 创建时钟类
class ClockBoxLayout(BoxLayout):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)
        # 新增一个开关
        self.timing_flag = False
        # 初始秒数
        self.timing_seconds=0
        self.on_start()  # 开始更新时间方法

    # 创建一个控件用于每秒调用一个方法
    def on_start(self):
        # 计划间隔 每隔0秒,执行一次update_time方法
        Clock.schedule_interval(self.update_time,0)

    # 被调用的方法,更新时钟和秒表
    def update_time(self,nap):
        if self.timing_flag:
            self.timing_seconds+=nap
        # 显示时间
        self.ids.time_label_id.text = strftime([b]%H[/b]:%M:%S)
        # divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)下面就是0除以60
        # m是商,s是余数
        m,s = divmod(self.timing_seconds,60)
        self.ids.stopwatch.text=(%02d:%02d.[size=40]%02d[/size]% (int(m),int(s),int(s*100%100)))

    # 本方法一调用self.timing_flag就返转
    def start_or_stop(self):
        # 如果按扭是开始就变成停止如果不是开始这返回停止(kivy默认为英文没回字体下次在学)这里是个三元表达试,没点基础还真看不出来
        self.ids.start_stop_button_id.text = Start if self.timing_flag else Stop
        self.timing_flag = not self.timing_flag


class ClocksApp(App):
    def build(self):
        return ClockBoxLayout()


if __name__ == __main__:
    # 设置页面背景
    from kivy.core.window import Window
    Window.clearcolor = [.9,.6,.8,1]
    ClocksApp().run()

==================kv================

<ClockBoxLayout>:
# 总体垂直
orientation:‘vertical‘
Label:
id:time_label_id
text:‘[b]00[/b]:00:00‘
font_size:60
# 使用标记
markup:True

BoxLayout:
# 子部件水平
orientation:‘horizontal‘
padding:20
spacing:20
# 布局大小
size_hint:(1,None)
# 布局高度
height:90
Button:
# 添加id属性
id:start_stop_button_id
text:‘Start‘
font_size:25
# bold为粗体
bold:True
# 设置边界
border:(2,2,2,2)
# 调用类函数,以触发事件
on_press:root.start_or_stop()
Label:
# 这里用前端方法把秒大小调了一下
id:stopwatch
text:‘00:00.[size=40]00[/size]‘
font_size:20
markup:True

实战计时器(二)

原文:https://www.cnblogs.com/vip136510786/p/14619315.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!