《Python+Kivy(App开发)从入门到实践》自学笔记:手动实战——计时器:计时重置

章节目录与知识点总揽

在‘Start’按钮右侧,再添加一个‘Reset’按钮用来重置计时器。因为属性基本与‘Start’按钮一致,所以这里将两个按钮的公共属性提取出来并定义为‘MyButton’,再为其设置触发事件。具体代码如下:

clock.kv修改:

<MyButton@Button>:
	font_size:25
	blod:True
	border:(2,2,2,2)


<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:start_stop_button_id
			text:'Start'
			font_size:25
			bold:True
			border:(2,2,2,2)
			on_press:root.start_or_stop()

		MyButton:
			text:'Reset'
			on_press:root.reset_clock()
	Label:
		id:stopwatch
		text:'00:00.[size=40]00[/size]'
		font_size:60
		markup:True

在main.py中ClockBoxLayout类里添加reset_clock()方法函数。具体如下:

from time import strftime

from kivy.app import App
from kivy.clock import Clock
from kivy.uix.boxlayout import BoxLayout

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
            
        #通过ID获取到time_label_id控件,并设置text属性值
        self.ids.time_label_id.text = strftime('[b]%H[/b]:%M:%S')
        m,s = divmod(self.timing_seconds,60)
        #同上设置text值
        self.ids.stopwatch.text=('%02d:%02d.[size=40]%02d[/size]'%(int(m),int(s),int(s*100%100)))

    def start_or_stop(self):
        #切换状态
        self.ids.start_stop_button_id.text='Start' if self.timing_flag else 'Stop'
        self.timing_flag = not self.timing_flag

    def reset_clock(self):
        #重置时钟
        if self.timing_flag:
            self.ids.start_stop_button_id.text='Start'
            self.timing_flag = False
        self.timing_seconds = 0
        
class ClockApp(App):
    #实现App类的build()方法(继承自App类)
    def build(self):
        return ClockBoxLayout()


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

运行main.py文件,增加了重置按钮的功能。如下图:

2201b738f2f4431e8fac6d21baa9ac30.png

上一篇:开始计时

下一篇:设置背景颜色

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静候光阴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值