如何解决我如何修复“ValueError: callback must be a callable, got 18:19:46”
所以我试图很好地掌握 kivy,我想创建一个基本的时钟应用程序,但当我去更新时钟标签时,我一直遇到问题。我在这里查看了其他线程,但仍然找不到正确的解决方案。我相信我在 Clock.schedule_interval 上做错了但同样,我试图了解 kivy 但我不确定。任何帮助将不胜感激
Python 代码
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
from kivy.clock import Clock
import time
Builder.load_file('myApp.kv')
class ClockScreen(Widget):
def updateClock(self):
hour = time.strftime("%H")
minute = time.strftime("%M")
second = time.strftime("%S")
Clocktime = self.root.ids.clock.text
print(Clocktime)
newTime = self.root.ids.clock.text = f'{hour}:{minute}:{second}'
return newTime
class FirstApp(App):
def build(self):
return ClockScreen()
def on_start(self):
Clock.schedule_interval(ClockScreen.updateClock(self),1)
FirstApp().run()
```
KV 文件
:
FloatLayout:
size: root.width,root.height
Label:
id: clock
text: "12:00"
解决方法
试试
def on_start(self):
Clock.schedule_interval(ClockScreen.updateClock,1)
原因:
ClockScreen.updateClock
是可调用的(函数句柄)。 This is also explained in the docs。
ClockScreen.updateClock(self)
实际上是调用返回时间的函数,您不能安排字符串(18:19:46
,根据您的错误)。
但是,这并没有说明 ClockScreen 的哪个实例得到更新(您通过类而不是特定实例引用该函数),因此这可能更准确地满足您的需求
class FirstApp(App):
def build(self):
return ClockScreen()
def on_start(self):
cs = self.build()
Clock.schedule_interval(cs.updateClock,1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。