0

あなたは私が全くの初心者だと思うでしょう - そしてあなたは正しいです!! とにかく私を助けてくれるほど親切な人もいるでしょう:)

私は、天気などを表示するライト (Phillips Hue) を制御および実行するための画面を備えた小さなホームデバイスを作成しています。

正常に動作するライトを実行するためのスクリプトを作成しました。私は今、インターフェースも構築しようとしています。スクリプトがバックグラウンドで実行されると、インターフェイスは実行時にボタンの状態を更新する必要があります。

Kivy の時計機能を使用して定期的にライトを更新する機能を作成しようとしています。プロパティを使用してみましたが、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)

... (その他のレイアウトに続きます)

Python コード:

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

よろしくサイモン、デンマーク

4

1 に答える 1