我知道你会认为我是一个绝对的新手——你是对的!!也许你们中的一些人会很好地帮助我:)
我正在制作一个带有屏幕的小型家用设备,用于控制和运行灯光(Phillips Hue),显示天气等。
我制作了一个运行灯光的脚本,效果很好。我现在也在尝试构建一个界面。当脚本在后台运行时,界面应该在运行时更新按钮状态。
我正在尝试创建一个函数,该函数将使用 Kivy 中的时钟功能定期更新灯光。A 尝试过使用属性,我尝试过使用 id,但无论我尝试什么都会出错。我看到人们在引用 Kivy 小部件时经常遇到问题,而且似乎这些错误有些不同,并且需要比我在 Kivy 构建和运行方式上更多的洞察力。
所以也许你们中的一些专业人士可以帮助指出我做错的事情!我已经包含了 kv 文件的受影响部分以及显示我的应用程序结构的伪代码。
KV 文件:
<FrontPage>:
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'tapet2.jpg'
GridLayout:
rows: 3
cols: 1
size: root.width * 1, root.height * 1
GridLayout:
rows: 1
cols: 2
Label:
size_hint_x: 0.35
text: "VH54 appen"
font_size: 30
Label:
text: ""
GridLayout:
rows: 1
cols: 5
padding: 20
spacing: 20
size_hint_y: 3
ToggleButton:
id: alrum_knap
text: 'Alrum'
on_state: root.alrum_knap(self.state)
...(继续进行其他布局)
蟒蛇代码:
from kivy.app import App, Widget
from kivy.clock import Clock
from kivy.core.window import Window
class FrontPage(Widget):
def update_alrum_knap(self):
( ... Code that defines alrum_on True or False)
if alrum_on == True:
FrontPage().ids.alrum_knap.state = 'down'
else:
FrontPage().ids.alrum_knap.state = 'normal'
def alrum_knap(self, state):
if state == 'down':
Hue.ongroup(alrum_gr, sc_dag_alrum, 10)
else:
Hue.offgroup(alrum_gr, 20)
def loop(self):
(Contains code for running the lights)
class Vh54App(App):
def build(self):
Clock.schedule_interval(FrontPage.loop, 0.5)
Clock.schedule_interval(FrontPage.update_alrum_knap, 0.5)
return FrontPage()
if __name__ == '__main__':
Vh54App().run()
我感谢您提供的所有帮助和见解。我非常清楚自己犯了各种新手错误!我在生活中的其他事情上做得更好,但这也很有趣:D
问候西蒙,丹麦