Python Kivy-定期更新标签文本

Python 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

python和kivy的新手。在仪表板上工作以显示时间和其他参数。仪表板当前已设置并完美显示所有值。但仍然无法弄清楚如何在用于时间的标签中动态更新时间。找到了类似的帖子,但仍在苦苦挣扎。在下面张贴我的代码摘要部分

使用Clock对象每隔一秒触发一个方法,该方法需要更新kv文件中的标签文本。但无法将这一逻辑付诸实施

sample.py

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()