""" 目的只显示时间是不够的,在要父布局中加一个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