例子:计时器
布局
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class ClockBoxLayout(BoxLayout):
def __init__(self, **kwargs):
super(ClockBoxLayout, self).__init__(**kwargs)
class ClockApp(App):
def build(self):
return ClockBoxLayout()
if __name__ == '__main__':
# 设置页面背景
from kivy.core.window import Window
Window.clearcolor = [.8, .8, .8, 1]
ClockApp().run()
kv文件
<ClockBoxLayout>:
orientation: 'vertical'
Label:
id: time_label_id
text: '[b]00[/b]:00:00'
font_size: 60
markup: True
计时器
具有暂停和重置功能
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
from time import strftime
from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout
from kivy.clock import Clock
class ClockBoxLayout(AnchorLayout):
def __init__(self, **kwargs):
super(ClockBoxLayout, self).__init__(**kwargs)
self.timing_flag = False
self.timing_seconds = 0
self.on_start()
def on_start(self):
# 设置clock 每0秒执行一次,代表实时进行不间断刷新。
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)
self.ids.stopwatch.text = ('%02d:%02d.[size=40]%02d[/size]' % (int(m), int(s), int(s * 100 % 100)))
def start_on_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):
def build(self):
return ClockBoxLayout()
if __name__ == '__main__':
# 设置页面背景
from kivy.core.window import Window
Window.clearcolor = [.8, .8, .8, 1]
ClockApp().run()
kv文件
<MyButton@Button>
font_size: 25
bold: True
border: (2,2,2,2)
<ClockBoxLayout>:
# 异步加载背景图像
AsyncImage:
source: 'https://blogcdn.sea-whales.cn/blog/typecho/11.jpg'
BoxLayout:
# 设置布局
orientation: 'vertical'
Label:
id: time_label_id # 添加ID属性,通过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
MyButton:
id: start_stop_button_id
text:'start'
on_press: root.start_on_stop()
MyButton:
text: 'Reset'
on_press: root.reset_clock() # 触发事件
Label:
id: stopwatch
text: '00:00.[size=40]00[/size]'
font_size: 60
markup: True
最后一次更新于2021-11-16 10:45:33
0 条评论