gpt4 book ai didi

python - 使用 Clock.schedule_interval 每秒更新显示的变量

转载 作者:行者123 更新时间:2023-12-04 17:37:55 25 4
gpt4 key购买 nike

我让 schedule_interval 调用一个函数,该函数从网络上获取天气数据,然后将其解析为字典。我让我的 kv 文件读取该字典并在 float 布局中显示值。我知道正在调用该函数,因为我也将它打印到控制台,但它没有在 floatlayout 窗口中更新。我认为这些值会根据我阅读的内容自动更新。

GUI.py
class weather(FloatLayout):
def w(self):
a = parse()
print(a)
return a

class weatherApp(App):
def build(self):
d = weather()
Clock.schedule_interval(d.w, 1)
return d

weather.kv
<Layout>:
DragLabel:
font_size: 600
size_hint: 0.1, 0.1
pos: 415,455
text: str(root.w()['temp0'])

这只是其中一个标签。我对 Kivy 很陌生,所以如果这对你有经验的基维来说看起来很残酷各位,我很抱歉。

def w(self): 的 print(a) 部分每秒都在工作,但窗口不显示新变量。

test.py

from kivy.app import App
from kivy.clock import Clock
from kivy.uix.floatlayout import FloatLayout

a = {}
a['num'] = 0

class test(FloatLayout):
def w(self):
a['num'] += 1
print(a['num'])
return a

class testApp(App):
def build(self):
d = test()
Clock.schedule_interval(test.w, 1)
return d

if __name__ == '__main__':
p = testApp()
p.run()


test.kv

#:kivy 1.10.1

<Layout>:
Label:
font_size: 200
size_hint: 0.1, 0.1
pos: 415,455
text: str(root.w()['num'])

最佳答案

看来你有几个误解:

  • 如果您在 python 中调用函数,并不意味着将调用 .kv。因此,如果您使用 Clock.schedule_interval() 调用 w 方法,它并不意味着计算值会更新 Label 文本的值。

  • 当您使用 Clock.schedule_interval 调用函数时,您必须使用对象而不是类。在您的例子中,test 是类,d 是对象。

当您使用 Clock.schedule_interval 调用函数时,您必须使用对象而不是类。在您的例子中,test 是类,而 d 是对象。

*.py

from kivy.app import App
from kivy.clock import Clock
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import DictProperty


class test(FloatLayout):
a = DictProperty({"num": 0})

def w(self, dt):
self.a["num"] += 1
print(self.a["num"])


class testApp(App):
def build(self):
d = test()
Clock.schedule_interval(d.w, 1)
return d


if __name__ == "__main__":
p = testApp()
p.run()

*.kv

#:kivy 1.10.1

<Layout>:
Label:
font_size: 200
size_hint: 0.1, 0.1
pos: 415,455
text: str(root.a["num"])

关于python - 使用 Clock.schedule_interval 每秒更新显示的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com