Python Kivy-定期更新标签文本
python和kivy的新手。在仪表板上工作以显示时间和其他参数。仪表板当前已设置并完美显示所有值。但仍然无法弄清楚如何在用于时间的标签中动态更新时间。找到了类似的帖子,但仍在苦苦挣扎。在下面张贴我的代码摘要部分 使用Clock对象每隔一秒触发一个方法,该方法需要更新kv文件中的标签文本。但无法将这一逻辑付诸实施 sample.pyPython Kivy-定期更新标签文本,python,kivy,Python,Kivy,python和kivy的新手。在仪表板上工作以显示时间和其他参数。仪表板当前已设置并完美显示所有值。但仍然无法弄清楚如何在用于时间的标签中动态更新时间。找到了类似的帖子,但仍在苦苦挣扎。在下面张贴我的代码摘要部分 使用Clock对象每隔一秒触发一个方法,该方法需要更新kv文件中的标签文本。但无法将这一逻辑付诸实施 sample.py import time import datetime import kivy kivy.require('1.11.0') from kivy.app impo
import time
import datetime
import kivy
kivy.require('1.11.0')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.core.text import LabelBase
from kivy.clock import Clock
class MySec(BoxLayout):
seconds_string = time.strftime("%S")
class MyApp(App):
def build(self):
#Clock.schedule_interval('periodic_method', 1)
return MySec()
if __name__ == '__main__':
MyApp().run()
my.kv文件
<mysec>:
orientation: 'vertical'
Label:
id: kv_sec
text: root.seconds_string
font_size: 200
:
方向:“垂直”
标签:
识别号:千伏秒
text:root.seconds\u字符串
字体大小:200
简而言之,我应该如何修改.py文件,使.kv标签文本每秒更新一次更新值。非常感谢。使用Kivy自动更新标签的文本,并使用Kivy对象,例如时钟。schedule_interval()
在每个时间间隔更新StringProperty
- 将
seconds\u string=time.strftime(“%S”)
替换为StringProperty
类型的class属性,seconds\u string=StringProperty(“”)
- 实现一个方法,
update\u time()
来更新类属性,seconds\u string
- 使用Kivy
Clock.schedule\u interval()
调用方法update\u time()
属性是定义事件并与之绑定的绝佳方式。
从本质上说,它们生成的事件使得
对象更改时,引用该属性的所有属性都将更改
自动更新
例子
下面的示例使用time()
函数提取时间。它可以替换为datetime.now()
例如,将time.strftime(“%S”)替换为datetime.now().strftime(“%S”)
,并添加导入语句,from datetime import datetime
main.py
导入时间
进口克维
kivy.require('1.11.0')
从kivy.app导入应用程序
从kivy.uix.boxlayout导入boxlayout
从kivy.clock导入时钟
从kivy.lang导入生成器
从kivy.properties导入StringProperty
生成器。加载\u字符串(“”)
:
方向:“垂直”
标签:
识别号:千伏秒
text:root.seconds\u字符串
字体大小:200
""")
MySec类(BoxLayout):
秒\u字符串=StringProperty(“”)
类别MyApp(应用程序):
def生成(自):
时钟计划间隔(lambda dt:self.update\u time(),1)
返回MySec()
def更新时间(自我):
self.root.seconds\u string=time.strftime(“%S”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
MyApp().run()
输出
打字错误:将:
更改为:
查看这篇非常类似的帖子:非常感谢。在跌跌撞撞地阅读了许多代码之后,这真是一种解脱。再次感谢你,非常欢迎。
import time
import kivy
kivy.require('1.11.0')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.properties import StringProperty
Builder.load_string("""
<MySec>:
orientation: 'vertical'
Label:
id: kv_sec
text: root.seconds_string
font_size: 200
""")
class MySec(BoxLayout):
seconds_string = StringProperty('')
class MyApp(App):
def build(self):
Clock.schedule_interval(lambda dt: self.update_time(), 1)
return MySec()
def update_time(self):
self.root.seconds_string = time.strftime("%S")
if __name__ == '__main__':
MyApp().run()